Shell腳本變量判斷參數命令


詳解:Shell腳本變量判斷參數命令詳解:Shell腳本變量判斷參數命令

系統變量
$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 ,如果使用未被雙引號變量,雖然可以工作,但這並不安全,習慣於使用雙引號括住變量測試字符串是一種良好的習慣。 另外,[[ ]] 結構比[ ]結構更加通用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM