標籤:
用vim或vi等編寫Shell指令碼的格式是固定的,如下:
#!/bin/sh#commentscode
#!
告訴系統其後路徑所指定的程式即是解釋此指令檔的Shell程式。如果首行沒有這句話,在執行指令檔的時候,將會出現錯誤
#
注釋行直到此行的結束。
儲存檔案為filename.sh,之後添加可執行許可權
chmod +x filename.sh
列印Hello,world的樣本:
#!/bin/sh#第一個shell指令碼#聲明一個變數a,並賦值a="Hello,world"#將變數a的值顯示的控制台上echo $a
=
變數賦值paramName=paramValue
echo
在控制台上回顯資料,相當於java中的System.out.println()
$
引用某個變數,$a就是引用變數a,也可以使用${a},可嵌套在""中使用
${}
引用某個變數,${a}就是引用變數a的值,這是為了避免混淆.
#!/bin/sh#說明$與${}的區別a="Hello,world"#會尋找變數as,結果顯示Test1,echo "Test1,$as"#會尋找變數a,結果顯示Test2,Hello,worldsecho "Test2,${a}s"
$#
表示命令列參數的個數
$0,$1,...$9,${10},...
$0對應指令碼名稱,$1對應第一個參數,沒有參數時什麼都不顯示
#!/bin/sh#輸出參數個數echo "參數個數:"$##輸出指令碼名稱echo "指令碼名稱:"$0#輸出第一個參數echo "第一個參數:"$1
假如此指令碼儲存為檔案hello.sh
[email protected]:~/shell_ex$ ./hello.sh 參數個數:0指令碼名稱:./hello.sh第一個參數:[email protected]:~/shell_ex$ ./hello.sh 12參數個數:1指令碼名稱:./hello.sh第一個參數:12
$*
列出所有的參數(沒有$0)
if [];then
...
elif [];then
...
else
...
fi
#!/bin/shif [ $# -gt 3 ];then echo "參數個數大於3"elif [ $# -lt 2 ];then echo "參數個數小於2"else echo "參數個數為3"fi
常用的測試條件有:
[ -f "$file" ] 判斷$file是否是一個檔案
[ $a -lt 3 ] 判斷$a的值是否小於3,同樣-gt和-le分別表示大於或小於等於
[ -x "$file" ] 判斷$file是否存在且有可執行許可權,同樣-r測試檔案可讀性
[ -n "$a" ] 判斷變數$a是否有值,測試空串用-z
[ "$a" = "$b" ] 判斷$a和$b的取值是否相等
[ cond1 -a cond2 ] 判斷cond1和cond2是否同時成立,-o表示cond1和cond2有一成立
要注意條件測試部分中的空格。在方括弧的兩側都有空格,在-f、-lt、=等符號兩側同樣也有空格。如果沒有這些空格,Shell解釋指令碼的時候就會出錯
shell指令碼學習