Shell指令碼基礎 if then語句

2021-10-06 18:41:51 字數 1976 閱讀 9991

簡單結構

if command|condition

then

commands

fi

帶else結構

if command|condition

then

commands

else

commands

fi

多層巢狀

if command|condition

then

commands

elif command|condition

then

commands

elif command|condition

then

commands

else

commands

fi

eg:

a=10

b=20

if (( "$a" < "$b" ))

then

echo "a"$b" ))

then

echo "a>b"

else

echo "a=b"

fi

首先你要理解 if 後面跟的是乙個命令,而不是乙個值,跟括號沒啥關係。

整個語句的執行過程是先執行if後面那個命令,如果返回0就執行then後面的語句,否則執行else後面的語句。

然後(...),((...)),[[...]]還有是語法的一部分,

( ... )表示在子shell裡面執行括號裡面的命令。$( ... )表示 ... 部分執行的輸出,通常用於a=$(...)這樣的賦值語句。

(( ... ))表示括號裡面的東西是在進行數字運算,而不是當成字串,以便你能夠用+、-、*、/、>、《這些算術運算子,同樣$(( ... ))就表示 ... 部分計算的結果。

[[ ... ]]表示裡面進行的是邏輯運算,以便你可以用&&、||這些邏輯運算子。

$[ ... ],這個是已經被廢棄的語法,跟$( ... )差不多。

至於[ ... ],它其實是乙個程式 /usr/bin/[,相當於/usr/bin/test,後面多的那個]只是為了對稱好看而已,所以[ 後面要有空格。

shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。

具體內容參考:

-e 存在,-d 資料夾,-f 檔案,-s  非空

echo 'qing shuru wenjianming'

read filename

if [ -e $filename ]

then

echo 'file exists'

fiif [ -d $filename ]

then

echo 'file is directory'

elif [ -f $filename ]

then

echo 'file is file'

fiif [ -s $filename ]

then

echo 'file is not empty'

fi

判斷乙個檔案是否是檔案,如果是,判斷有無寫許可權,有的話寫入東西

echo 'please input file name:'

read filename

if [ -f $filename ]

then

if [ -w $filename ]

then

echo 'qing shuru wenzi:'

cat >>$filename

else

echo 'file cannot write'

fielse

echo '$filename is not a file'

fi

按ctrl+d退出編輯

shell指令碼基礎

執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...

shell指令碼基礎

shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...

Shell指令碼基礎

1 shell是使用者與核心進行互動操作的一種介面,目前最流行的shell稱為bash shell 2 shell也是一門程式語言 解釋型的程式語言 即shell指令碼 3 乙個系統可以存在多個shell,可以通過cat etc shells命令檢視系統中安裝的shell,不同的shell可能支援的...