shell 退出狀態


 

命令的退出狀態(exit statu)是指執行完Linux命令或shell函數后,該命令或函數返回給調用它的程序的一個比較小的整數值。if 語句的判斷條件,從本質上講,判斷的就是命令的退出狀態。

按照慣例來說,退出狀態為 0 表示“成功”;也就是說,程序執行完成並且沒有遇到任何問題。除 0 以外的其它任何退出狀態都為“失敗”。也會有例外,比如 diff 命令用來比較兩個文件的不同,對於“沒有差別”的文件返回 0,對於“找到差別”的文件返回 1,對無效文件名返回 2。而在其他編程語言(C、Python等)中,0 表示“假”,其它值表示“真”。

最常用與獲取命令退出狀態的方式是$?

退出狀態和邏輯運算符的組合

Shell if 語句允許使用邏輯運算符將多個退出狀態組合起來,這樣可以一次判斷多個條件了。

Shell 邏輯運算符

運算符 使用格式 說明

&&

邏輯與

expression1 && expression2

當 expression1 和 expression2 同時成立時,整個表達式才成立。

如果檢測到 expression1 的退出狀態為 1,就不會再檢測 expression2 了,因為不管 expression2 的退出狀態是什么,整個表達式必然都是不成立的,檢測了也是多此一舉。

||
邏輯或

expression1 || expression2 expression1 和 expression2 兩個表達式中只要有一個成立,整個表達式就成立。

如果檢測到 expression1 的退出狀態為 0,就不會再檢測 expression2 了,因為不管 expression2 的退出狀態是什么,整個表達式必然都是成立的,檢測了也是多此一舉。
! 邏輯非 !expression

相當於“取反”的效果。如果 expression 成立,那么整個表達式就不成立;

如果 expression 不成立,那么整個表達式就成立。

舉栗

作用 腳本 結果 知識點
將用戶輸入的 URL 寫入到文件中
  1. #!/bin/bash
  2. read filename
  3. read url
  4. if test -w $filename && test -n $url
  5. then
  6. echo $url $filename
  7. echo "寫入成功"
  8. else
  9. echo "寫入失敗"
  10. fi
運行結果為:
urls.txt↙
http://c.biancheng.net/shell/↙
寫入成功

test 是 Shell 內置命令,可以對文件或者字符串進行檢測。

其中,-w選項用來檢測文件是否存在並且可寫,-n選項用來檢測字符串是否非空。





免責聲明!

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



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