一、test命令
test命令是shell內部命令,它計算作為其引數的表示式是真還是假。
如果表示式為真,則test返回0(注意與c語言0表示false不同),如果表示式為假,返回非0。
shell提供了另外乙個呼叫test命令的方式,就是用方括號[]來代替單詞test。
呼叫test命令的格式為:
test expr1 opr expr2 或是 [ expr1 opr expr2 ]
test opr expr1 或是 [ opr expr1 ]
(注意方括號與表示式之間的空格必須存在)
二、邏輯運算子
-a expr1 -a expr2 邏輯與
-o expr1 -o expr2 邏輯或
! !expr1 邏輯非
三、數值判斷
-eq num1 -eq num2 是否相等
-ne num1 -ne num2 是否不相等
-gt num1 -gt num2 是否大於
-ge num1 -ge num2 是否大於等於
-lt num1 -lt num2 是否小於
-le num1 -le num2 是否小於等於
四、字串判斷
= str1 = str2 字串是否相等
!= str1 != str2 字串是否不等
-n -n str1 字串長度是否不等於0
-z -z str2 字串長度是否等於0
五、檔案判斷
-r -r filename 檔案是否存在且可讀
-w -w filename 檔案是否存在且可寫
-s -s filename 檔案是否存在且長度非0
-f -f filename 檔案是否存在且是普通檔案
-d -d filename 檔案是否存在且是乙個目錄
六、命令列引數/位置變數
$0 指令碼的名字
$1, $2, ..., $9 指令碼第1個到第9個命令列引數
$# 命令列引數的個數
$@ 或是 $* 所有命令列引數
$? 最後一條命令的退出狀態
$$ 正在執行程序的id(pid)
給位置變數賦值:
set one two three
echo $1 $2 $3
結果顯示:one two three
shift命令:
這條命令可以對位置引數進行移動,每次呼叫都會導致:$1=$2、$2=$3、$3=$4....
以下**可以列印出所有的引數
while [ -n "$1" ]
doecho $1
shift
done
七、當在對變數進行判斷時最好將變數用雙引號括起來,這樣可以避免引數包含空格或是tab帶來的問題。
如:」$home「、"$#"
八、變數替換(賦值)
shell提供了變數替換功能,使使用者能夠檢查變數的值並根據選項改變它的值。
$variable 儲存在variable中的值
$ 儲存在variable中的值
$ 如果variable的值非空,則值為variable,否則值為string
$ 如果variable的值非空,則值為string,否則值為空
$ 如果variable的值非空,則值為variable,否則值為string且variable的值設定為string
$ 如果variable的值非空,則值為variable,否則顯示string並退出
shell中 if 判斷條件的引數
1 檔案判斷 a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file...
shell指令碼中,關於if,以及條件判斷
bin sh system uname s 獲取作業系統型別 if system linux then 如果是linux的話列印linux字串 echo linux elif system freebsd then echo freebsd elif system solaris then echo...
shell中條件判斷if
a file 如果file存在則為真。b file 如果file存在且是乙個塊特殊檔案則為真。c file 如果file存在且是乙個字特殊檔案則為真。d file 如果file存在且是乙個目錄則為真。e file 如果file存在則為真。f file 如果file存在且是乙個普通檔案則為真。g fi...