先寫一些基本語法:
1、字串判斷
str1 = str2 當兩個串有相同內容、長度時為真
str1 != str2 當串str1和str2不等時為真
-n str1 當串的長度大於0時為真(串非空)
-z str1 當串的長度為0時為真(空串)
str1 當串str1為非空時為真
2、數字的判斷
int1 -eq int2 兩數相等為真
int1 -ne int2 兩數不等為真
int1 -gt int2 int1大於int2為真
int1 -ge int2 int1大於等於int2為真
int1 -lt int2 int1小於int2為真
int1 -le int2 int1小於等於int2為真
3 檔案的判斷
-r file 使用者可讀為真
-w file 使用者可寫為真
-x file 使用者可執行為真
-f file 檔案為正規檔案為真
-d file 檔案為目錄為真
-c file 檔案為字元特殊檔案為真
-b file 檔案為塊特殊檔案為真
-s file 檔案大小非0時為真
-t file 當檔案描述符(預設為1)指定的裝置為終端時為真
3、複雜邏輯判斷
-a 與
-o 或
! 非
下面是一些使用例項:
#這裡的-x 引數判斷$mypath是否存在並且是否具有可執行許可權
if [ ! -x "$mypath"]; then
mkdir "$mypath"
fi #這裡的-d 引數判斷$mypath是否存在
if [ ! -d "$mypath"]; then
mkdir "$mypath"
fi #這裡的-f引數判斷$myfile是否存在
if [ ! -f "$myfile" ]; then
touch "$myfile"
fi #其他引數還有-n,-n是判斷乙個變數是否是否有值
if [ ! -n "$myvar" ]; then
echo "$myvar is empty"
exit 0
fi #兩個變數判斷是否相等
if [ "$var1" == "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi if list then
do something here
elif list then
do another thing here
else
do something else here
fi
ex1:
#!/bin/sh
system=`uname -s` #獲取作業系統型別,我本地是linux
if [ $system = "linux" ] ; then #如果是linux的話列印linux字串
echo "linux"
elif [ $system = "freebsd" ] ; then
echo "freebsd"
elif [ $system = "solaris" ] ; then
echo "solaris"
else
echo "what?"
fi #ifend
基本上和其他指令碼語言一樣。沒有太大區別。不過值得注意的是。裡面的條件判斷。
linux shell指令碼之if判斷
無論什麼程式語言都離不開條件判斷。shell也不例外。if list then do something here elif list then do another thing here else do something else here fi ex1 bin sh system uname ...
Linuxshell指令碼之if條件判斷
複製 如下 if list then do something here elif list then do another thing here else do something else here fi ex1 複製 如下 bin sh system uname s 獲取作業系統型別,我本地是...
Linux shell之Shell指令碼
使用多條命令 shell指令碼的關鍵是可以輸入多條命令,甚至可以將一條命令的結果傳遞給另一條命令。date who 兩個命令shell指令碼的寫法 建立shell指令碼 1.將shell命令放置到乙個文字檔案中 2.指明所使用的shell,比如 bin bash 3.可以用 注釋,但是一般注釋不會被...