簡單結構
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可能支援的...