shell中的0 1與真假


在shell程序中,作為條件的退出狀態碼時,0(成功)表示真,非0表示假,這一點與C語言恰恰相反。

每個表達式或者Linux命令執行完退出的時候,都會返回一個退出狀態碼(exit status 0~255),if語句根據 [ ] 表達式執行的退出狀態碼進行判斷,在所有的退出狀態碼中,0表示執行成功,1~255為退出的狀態代號(詳見下表)。所以,與C語言不同的就在這里,shell的if [ 1 ] 中整數 0 1 與C語言中的 while(1)用法並不相通,也就是說整數 0 1 作為退出狀態碼的時候,確實表示真假,但是並不能作為 if [ ] 的判斷條件來用,雖然shell也是弱數據類型的語言。

即:作為條件的退出狀態碼時,0(成功)表示真,非0表示假

直接作為if []的判斷條件if [ 1 ]時,任何數字都返回真

 

Linux常見的退出狀態碼:

狀態碼: 描述:
0 命令成功結束
1 通用未知錯誤
2 誤用shell命令
126 命令不可執行
127 沒找到命令
128 無效退出參數
130 通過Ctrl + C 終止

 

shell中可以將 0 1 作為條件寫入判斷語句中嗎?

Bash是腳本語言,也就是一種弱編程語言。0 1 只表示返回狀態碼。

判斷語句中不管寫什么數字都返回真。因此shell中 while[ 1 ]與c語言while(1)循環的意思是不一樣的,前者是因為判斷語句中是數字,所以永真(注意while [ 0 ]也是真),后者是1代表true所以永真。

注:shell腳本中的[ ]條件語句兩端必須有空格 即[空格conditon空格]

參考文章

linux命令返回值的含義解析 - https://www.jb51.net/article/141998.htm

shell命令中的條件測試與判斷語句 - https://www.cnblogs.com/chorm590/p/14864080.html

shell學習筆記(2)shell腳本 0 1 和真假 - https://blog.csdn.net/shGray/article/details/101354337

shell中的0 1與真假 - https://blog.csdn.net/appke846/article/details/80652465

shell真假01的真相 - https://blog.csdn.net/timo1160139211/article/details/74079553


免責聲明!

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



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