shell指令碼 語法

2021-07-11 18:18:22 字數 1754 閱讀 2777

條件測試: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...