一、test 命令
Shell中的 test 命令用于檢查某個條件是否成立,它可以進行數值、字符和文件三個方面的測試。
數值測試:-eq, -ne, -lt, -gt, -le, -ge
字符串測試: =, !=,
文件測試:
-e 文件名: 如果文件存在則為真
-r 文件名: 如果文件存在且可讀則為真
-w 文件名: 如果文件存在且可寫則為真
-x 文件名: 如果文件存在且可執行則為真
-s 文件名: 如果文件存在且至少有一個字符則為真
-d 文件名: 如果文件存在且為目錄則為真
-f 文件名: 如果文件存在且為普通文件則為真
-c 文件名: 如果文件存在且為字符型特殊文件則為真
-b 文件名: 如果文件存在且為塊特殊文件則為真
like:
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
like:
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '兩個數相等!'
else
echo '兩個數不相等!'
fi
二、流程控制
和Java、PHP等語言不一樣,sh的流程控制不可為空
1、if:
if condition
then
command1
command2
...
commandN
fi
2、if else:
if condition
then
command1
command2
...
commandN
else
command
fi
3、for 循環:
for var in item1 item2 ... itemN; do command1; command2… done;
4、while 語句:
while condition
do
command
done
5、case:case語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令。
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
6、break:允許跳出所有循環
7、continue:continue命令與break命令類似,只有一點差別,它不會跳出所有循環,僅僅跳出當前循環。
三、函數
1、語法:可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數;參數返回,可以顯示加:return 返回,如果不加,將以最后一條命令運行結果,作為返回值。 return后跟數值n(0-255),函數返回值在調用該函數后通過 $? 來獲得。
2、函數參數:調用函數時可以向其傳遞參數。在函數體內部,通過 $n 的形式來獲取參數的值。例如,$1表示第一個參數。
add(){
echo "first parameter: $1"
echo "second parameter: $2"
return $(($1+$2))
}
add 1 2
echo $?
四、文本包含
Shell 也可以包含外部腳本。這樣可以很方便的封裝一些公用的代碼作為一個獨立的文件。語法:
. filename # 注意點號(.)和文件名中間有一空格
或 source filename
eg:
test1.sh 代碼如下:
url="http://www.runoob.com"
test2.sh 代碼如下:
. ./test1.sh
echo "菜鳥教程官網地址:$url"