shell 條件判斷 大全 大多數情況下,可以使用測試命令 來對條件進行測試。比如可以比較字符串、判斷文件 是否存在及是否可讀等等... -f 是否爲文件(file)通常用" [ ] "來表示條件測試。注意這裏的空格很重要。要確保方括號的空格。 [ -f "somefile" ] :判斷是否是一個文件 [ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行權限 [ -n "$var" ] :判斷$var變量是否有值 [ "$a" = "$b" ] :判斷$a和$b是否相等 [ ] :條件測試. 條件測試表達式放在[ ]中. [[ ]]: 是一個擴展的"[ ]"命令,[[ ]]結構比[ ]結構更加通用. 使用` `.``.``.` `條件判斷結構, 而不是[ ... ], 能夠防止腳本 中的許多邏輯錯誤. 比如,&& , ||, <, 和> 操作符能夠正常存在於` `條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯. (( )) :整數擴展. 擴展並計算在(( ))中的整數表達式. 雙圓括號結構也被認爲是在Bash中使用C語言風格操作變量的一種處理機制. 1.文件狀態判斷 如果下面的條件成立將會返回真. -e 文件或目錄是否存在 -s 文件大小不爲零 -d 是否爲目錄 -r 文件是否具有可讀權限(指的是正在運行 這個測試命令的用戶 是否具有讀權限) -w 文件是否具有可寫權限(指的是正在運行這個測試命令的用戶是否具有寫權限) -x 文件是否具有可執行權限(指的是正在運行這個測試命令的用戶是否具有可執行權限) -b 表示這是一個塊設備(軟盤, 光驅, 等等.) -c 表示這是一個字符設備(鍵盤, mod em, 聲卡, 等等.) -p 這個文件是一個管道 -h 這是一個符號鏈接 -L 這是一個符號鏈接 -S 表示這是一個socket -t 文件(描述符)被關聯到一個終端設備上,這個測試選項一般被用來檢測腳本中的stdin([ -t 0 ]) 或者stdout([ -t 1 ])是否來自於一個終端. -g set-group-id(sgid)標記被設置 到文件或目錄上,如果目錄具有sgid標記的話, 那麼在這個目錄下所創建的文件將屬於擁有這個目錄的用戶組, 而不必是創建這個文件的用戶組. 這個特性對於在一個工作組中共享目錄非常有用. -u set-user-id (suid)標記被設置到文件上,如果一個root用戶所擁有的二進制可執行文件設置了set-user-id標記位的話, 那麼普通用戶也會以root權限來運行這個文件. [1] 這對於需要訪問系統 硬件的執行程序(比如pppd和cdrecord)非常有用. 如果沒有suid標誌的話, 這些二進制執行程序是不能夠被非root用戶調用的. -k 設置粘貼位 對於"粘貼位"的一般瞭解, save-text-mode標誌是一個文件權限的特殊類型. 如果文件設置了這個標誌, 那麼這個文件將會被保存到緩存 中, 這樣可以提高訪問速度. [2] 粘貼位如果設置在目錄中, 那麼它將限制寫權限. 對於設置了粘貼位的文件或目錄, 在它們的權限標記列中將會顯示t. -O 判斷你是否是文件的擁有者 -G 文件的group-id是否與你的相同 -N 從文件上一次被讀取到現在爲止, 文件是否被修改過 f1 -nt f2 文件f1比文件f2新 f1 -ot f2 文件f1比文件f2舊 f1 -ef f2 文件f1和文件f2是相同文件的硬鏈接 ! “非 ”反轉上邊所有測試結果 2.整數值比較 -eq 等於 如: if [ "$a" -eq "$b" ] -ne 不等於 if [ "$a" -ne "$b" ] -gt 大於 if [ "$a" -gt "$b" ] -lt 小於 f [ "$a" -lt "$b" ] -ge 大於等於 if [ "$a" -ge "$b" ] -le 小於等於 if [ "$a" -le "$b" ] < 小於(在雙括號中使用) (("$a" < "$b")) <= 小於等於(在雙括號中使用) (("$a" <= "$b")) > 大於(在雙括號中使用) (("$a" > "$b")) >= 大於等於(在雙括號中使用) (("$a" >= "$b")) 3.字符串比較 = 等於 if [ "$a" = "$b" ] == 等於 if [ "$a" == "$b" ],與=等價. != 不等號 if [ "$a" != "$b" ],這個操作符將在` `.``.``.` `結構中使用模式 匹配. < 小於, 按照ASCII字符進行排序,if [[ "$a" < "$b" ]],if [ "$a" /< "$b" ],注意"<"使用在[ ]結構中的時候需要被轉義. > 大於, 按照ASCII字符進行排序 if [[ "$a" > "$b" ]],if [ "$a" /> "$b" ],注意">"使用在[ ]結構中的時候需要被轉義. -z 字符串爲"null", 意思就是字符串長度爲零 -n 字符串不爲"null" 4.邏輯判斷 && (-a) 邏輯與 : 兩邊都爲真,則爲真 || (-o) 邏輯或 : 兩邊任何一個爲真,則爲真 ! 邏輯否 : 表示當指定的條件表達式不成立時,整個測試命令的結果則爲真。 判斷一個變量是否全爲數字的方法 read -p ”input a number:“ number a. [[ $number =~ ^[0-9]+$ ]] b. [ $number -ge 0 ] &>/dev/null 如果不爲數字時,會報錯,&>/dev/null可以免除報錯。 |
shell 條件判斷 大全
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.