文章轉自:
http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html
一、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" ]
do
echo $1
shift
done
七、
當在對變量進行判斷時最好將變量用雙引號括起來,這樣可以避免參數包含空格或是TAB帶來的問題。
如:”$HOME“、"$#"
八、變量替換(賦值)
shell提供了變量替換功能,使用戶能夠檢查變量的值並根據選項改變它的值。
$variable 保存在variable中的值
${variable} 保存在variable中的值
${variable:-string} 如果variable的值非空,則值為variable,否則值為string
${variable:+string} 如果variable的值非空,則值為string,否則值為空
${variable:=string} 如果variable的值非空,則值為variable,否則值為string且variable的值設置為string
${variable:?string} 如果variable的值非空,則值為variable,否則顯示string並退出