條件測試:test/[
命令test/[ 可以測試乙個條件是否成立,如果測試條件為真,則該命令的exitstatus為0,反之,exitstatus為1。
注意:命令[ 各引數之間應該用空格隔開,以]結尾。但是 ] 不是命令。
測試命令:
[ -d dir ] :如果dir存在並且是乙個目錄則為真
[ -f file ]:如果file存在並且是乙個普通檔案則為真
[ -z string ]:如果string的長度為0則為真
[ -n string ]:如果string的長度非0則為真
[ string1 = string2 ]:如果兩個字串相同則為真
[ string != string2 ]:如果兩個字串不相同則為真
測試條件之間也可以與、或、非邏輯運算:!表示邏輯反 -a表示邏輯與 -o表示邏輯或
注意:如果上例中的_str變數事先沒有定義,就會被shell展開為空字串,則會造成測試條件的語法錯誤,所以應該把變數取值放在「」中。
if/then/elif/else/fi
分fi表示if語句塊的結束
注意:1.如果兩條命令在同一行需要用;號隔開
2.命令和各引數之間必須用空格隔開
if命令的引數組成一條子命令,如果該子命令的exit status為0,則執行then後面的子命令,如果exit status非0,則執行elif、else、或者fi後面的子命令。
: 是乙個特殊的命令,稱為空命令,該命令不做任何事,但exit status總是真。
&&相當於if...then...,||相當於if not...then...。
&&和||用於連線兩個命令,-a和-o用於測試表示式中連線兩個測試條件。
csae/esac
esac表示csae語句塊的結束。c語言的case只能匹配整型或字元型常量表示式,shell指令碼的case可以匹配字串和wildcard,每個分支可以有若干條命令,結尾必須;;結束,執行時找到第乙個匹配的分支並執行相應的命令,然後直接跳 到esac之後,不需要像c語言一樣用break跳出。
for/do/done
while/do/done
Shell指令碼語法
定義單變數 p name kang 使用單變數 echo p name js 輸出kang.js echo p name.js 輸出kang.js cp p name.js copy.js 命令1 命令2 如果左邊的 命令1 執行成功,那麼右邊的 命令2 才會被執行。命令1 命令2 與 相反。如果 ...
shell指令碼語法
測試乙個條件是否成立,python ubuntu 1004 var 2 python ubuntu 1004 test var python ubuntu 1004 echo 0python ubuntu 1004 test var gt 5 python ubuntu 1004 echo 1或者 ...
shell指令碼語法
一 數值運算 1 expr數值運算工具 root localhost aa 11 root localhost bb 22 給變數aa和變數bb賦值 root localhost dd expr aa bb dd的值是aa和bb的和。注意 號左右兩 側必須有空格 2 表示式求值 expr1 3 ex...