SHELL編程入門
Linux系統分層如下:用戶層、應用層、Shell層、內核層、硬件層
Shell是一個用c語言編寫的程序,它是用戶使用Linux的橋樑。Shell既是一種命令語言,又是一種程序設計語言
Shell是指一種應用程序,這個程序提供了一個界面,用戶通過這個界面訪問操作系統的內核服務
Shell編程基礎
我們可以使用任意一種文本編輯器編寫Shell腳本(vi、gedit等),但是它必須以以下內容開始:
#!/bin/bash(推薦使用)
#!是特殊符號,用來表示shell腳本程序
變量賦值和引用
在Shell編程中,使用變量無需事先聲明,同時變量的命令規則如下:
- 首個字符必須爲字母
- 中間不能有空格,但是可以用‘_’
- 不能使用標點
- 不能使用bash關鍵字
變量賦值語法:變量名=值(不能有空格)
變量的引用:’$’,示例如下:
#!/bin/bash
a="Hello World"
echo "a is:" $a
有時變量名和文本會混淆,可以使用{變量名},以區別變量和文本
num=1
echo "This is the $numnd" #num nd兩個會出現混淆
#應更改爲
echo "This is the ${num}nd"
shell默認賦值類型爲字符串
Shell流程控制
if語句
“if”表達式如果條件爲真,就會執行then後的部分:
if ...;then
...
elif...;then
...
else
...
fi
如果進行條件判斷,需要使用"[ ]"(if後有空格,且判斷語句也需要帶上空格)
#!/bin/bash
if [ ${SHELL} = "/bin/bash" ]; then
echo "OK"
fi
case語句
case表達式可以用來匹配一個給定的字符串,而不是數字
case ... in
...)
do something here ;;
...)
do something here ;;
esac
程序實例如下:
#!/bin/bash
case $1 in
"1")
echo "This is 1" ;;
"2")
echo "This is 2" ;;
esac
*注意:表示所有參數
select語句
select表達式是bash中的一種拓展應用,擅長於交互式場景,用戶可以在一組值中進行選擇
select var in ...;do
break;
done
...now $var can be used...
select實例如下:
#!/bin/bash
echo "What's your select?"
select var in "A.---" "B.----" "C.----" "D.----";do
break;
done
echo "Your select is ${var}"
注意:每個選項之間有空格
while/for循環
while循環
while...;do
...
done
for循環
for var in ...;do
...
done
for循環實例:
#!/bin/bash
for var in a b c ; do
echo "$var"
done
腳本運行將會輸出a、b、c
Shell中的特殊符號
-
“”可以防止變量名代替字符串,‘’則更加嚴格
echo $SHELL echo "$SHELL" echo '$SHELL' #程序運行結果如下: /bin/bash /bin/bash $SHELL
-
Here Document
當需要將幾行文本信息傳遞給一個命令時,就可以使用Here Document
command << text **** **** text(頂格寫)
例如:
#!/bin/bash cat << text 1111111 2222222 3333333 text
腳本運行之後將輸出兩個text中間的內容
Shell函數
函數定義
function function_name()
{
...
}
#函數調用
function_name
函數使用實例如下:
#!/bin/bash
function hello()
{
echo "Hello World"
}
hello