詳解 Shell指令碼變數判斷引數命令

2021-08-20 04:18:16 字數 2468 閱讀 9744

系統變數

$n   傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2

$? 上個命令的退出狀態,或函式的返回值。成功返回0,失敗返回1

$# 傳遞給指令碼或函式的引數個數

$* 所有這些引數都被雙引號引住。若乙個指令碼接收兩個引數,$*等於$1$2

$0 正在被執行命令的名字。對於shell指令碼而言,這是被啟用命令的路徑

$@ 被雙引號(」 「)包含時,與 $* 稍有不同。若乙個指令碼接收到兩個引數,$@等價於$1$2

$$ 當前shell的程序號。對於shell指令碼,這是其正在執行時的程序id

$! 前乙個後台命令的程序號

檔案或目錄判斷

-b file 若檔案存在且是乙個塊特殊檔案,則為真

-c file 若檔案存在且是乙個字元特殊檔案,則為真

-d file 若檔案存在且是乙個目錄,則為真

-e file 若檔案存在,則為真

-f file 若檔案存在且是乙個規則檔案,則為真

-g file 若檔案存在且設定了sgid位的值,則為真

-h file 若檔案是軟鏈結,則為真

-k file 若檔案存在且設定了」sticky」位的值

-l file 若檔案為符號鏈結,則為真

-p file 若檔案存在且為一已命名管道,則為真

-r file 若檔案可讀,則為真

-s file 判斷檔案是否存在,且是否為非空,不為空,則為真

-s file 判斷檔案是否存在,且是否為套接字檔案

-t file 檔案描述符(預設為1)指定的裝置為終端時為真

-u file 若檔案存在且設定了suid位,則為真

-w file 若檔案可寫,則為真

-x file 若檔案可執行,則為真

[ file1 -nt file2 ] 若file1比file2新,或file1存在但file2不存在,則為真

[ file1 -ot file2 ] 若file1比file2老,或file2存在但file1不存在,則為真

[ file1 -ef file2 ] 若file1和file2指向相同的裝置和節點號則返回,為真

整數判斷

-eq  兩數相等,則為真     例:if [ "$a" -eq "$b" ]

-ne 兩數不相等,則為真 例:if [ "$a" -ne "$b" ]

-gt a大於b,則為真 例:if [ "$a" -gt "$b" ]

-ge 大於或等於,則為真 例:if [ "$a" -ge "$b" ]

-lt a小於b,則為真 例:if [ "$a" -lt "$b" ]

-le a小於或等於b,則為真 例:if [ "$a" -le "$b" ]

< 小於(需雙括號) 例:(("$a" < "$b"))

<= 小於等於(需雙括號) 例:(("$a" <= "$b"))

> 大於(需雙括號) 例:(("$a" > "$b"))

>= 大於等於(需雙括號) 例:(("$a" >= "$b"))

小資料比較可使用awk。

邏輯運算判斷符

!  [ ! false ]              返回true 邏輯否,條件為假,結果為真

-a [ $a -lt 2 -a $b -gt 5 ] 返回true 邏輯與,兩個表示式都為真,則為真

-o [ $a -lt 2 -o $b -gt 5 ] 返回true 邏輯或,只要有乙個表示式為true,則為真

[ ] || [ ] 用or來合併兩個條件

[ ] && [ ] 用and來合併兩個條件

字串判斷

== 若兩個字串相同則為真,與=等價 例:[ "str1" = "str2" ]

!= 若字串不相同則為真 例:[ "str1" != "str2" ]

< 若str1字典排序在str2前則為真 例:[[ "str1" < "str2" ]] > 若str1字典排序在str2後則為真 例:[ "str1" \> "str2" ]

-n 若str長度非零則為真,即非空 例:[ -n "str1" ]

-z 若file長度為零,即空,則為真 例:[ -z "str1" ]

注意:在結構中」< 「需要被轉義,例如:[ "str1" /< "str2" ],在雙中括號中則無需轉義。 總結:使用-n在結構中測試,必須要用""把變數引起來,使用乙個未被""的字串,請使用 ! -z ,如果使用未被雙引號變數,雖然可以工作,但這並不安全,習慣於使用雙引號括住變數測試字串是一種良好的習慣。 另外,[[ ]] 結構比[ ]結構更加通

編寫SHELL指令碼 判斷使用者的引數

測試語句格式 條件表示式 常見的幾種形式 d etc 判斷 etc是不是乙個目錄型別,e etc php.ini 判斷 etc php.ini 檔案是否存在 f etc php.ini 判斷 etc php.ini 是不是一般檔案 r etc php.ini 判斷 etc php.ini 當前使用者...

編寫SHELL指令碼 判斷使用者的引數

測試語句格式 條件表示式 常見的幾種形式 d etc 判斷 etc是不是乙個目錄型別,e etc php.ini 判斷 etc php.ini 檔案是否存在 f etc php.ini 判斷 etc php.ini 是不是一般檔案 r etc php.ini 判斷 etc php.ini 當前使用者...

shell指令碼程式設計 變數補充 if條件判斷

shell指令碼程式設計 變數補充 if條件判斷 變數的型別 字串 數值 布林型別 null shell中指定變數的型別 declaredeclare 內建命令 用來宣告和修改變數的屬性 唯讀 readonly 設定為唯讀變數 declare r a 10 不能修改包括不能刪除 設定為數值變數 de...