shell中的條件判斷 引數以及變數替換

2021-06-26 01:30:23 字數 1902 閱讀 9084

一、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...