小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Shell $?:獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài)

 rongq2007 2021-01-11

最后運(yùn)行的命令的結(jié)束代碼(返回值)即執(zhí)行上一個(gè)指令的返回值 (顯示最后命令的退出狀態(tài)。0表示沒(méi)有錯(cuò)誤,其他任何值表明有錯(cuò)誤)

$? 是一個(gè)特殊變量,用來(lái)獲取上一個(gè)命令的退出狀態(tài),或者上一個(gè)函數(shù)的返回值。

所謂退出狀態(tài),就是上一個(gè)命令執(zhí)行后的返回結(jié)果。退出狀態(tài)是一個(gè)數(shù)字,一般情況下,大部分命令執(zhí)行成功會(huì)返回 0,失敗返回 1,這和C語(yǔ)言的 main() 函數(shù)是類似的。

不過(guò),也有一些命令返回其他值,表示不同類型的錯(cuò)誤。

1) $? 獲取上一個(gè)命令的退出狀態(tài)

編寫下面的代碼,并保存為 test.sh:

#!/bin/bashif [ "$1" == 100 ]thenexit 0  #參數(shù)正確,退出狀態(tài)為0elseexit 1  #參數(shù)錯(cuò)誤,退出狀態(tài)1fi

exit表示退出當(dāng)前 Shell 進(jìn)程,我們必須在新進(jìn)程中運(yùn)行 test.sh,否則當(dāng)前 Shell 會(huì)話(終端窗口)會(huì)被關(guān)閉,我們就無(wú)法取得它的退出狀態(tài)了。

例如,運(yùn)行 test.sh 時(shí)傳遞參數(shù) 100:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ bash ./test.sh 100  #作為一個(gè)新進(jìn)程運(yùn)行
[mozhiyan@localhost demo]$ echo $?
0


再如,運(yùn)行 test.sh 時(shí)傳遞參數(shù) 89:

[mozhiyan@localhost demo]$ bash ./test.sh 89  #作為一個(gè)新進(jìn)程運(yùn)行
[mozhiyan@localhost demo]$ echo $?
1

2) $? 獲取函數(shù)的返回值

編寫下面的代碼,并保存為 test.sh:

#!/bin/bash#得到兩個(gè)數(shù)相加的和function add(){return `expr $1 + $2`}add 23 50  #調(diào)用函數(shù)echo $?  #獲取函數(shù)返回值

運(yùn)行結(jié)果:
73

有 C++、C#Java 等編程經(jīng)驗(yàn)的讀者請(qǐng)注意:嚴(yán)格來(lái)說(shuō),Shell 函數(shù)中的 return 關(guān)鍵字用來(lái)表示函數(shù)的退出狀態(tài),而不是函數(shù)的返回值;Shell 不像其它編程語(yǔ)言,沒(méi)有專門處理返回值的關(guān)鍵字。

以上處理方案在其它編程語(yǔ)言中沒(méi)有任何問(wèn)題,但是在 Shell 中是非常錯(cuò)誤的,Shell 函數(shù)的返回值和其它編程語(yǔ)言大有不同,我們將在《Shell函數(shù)返回值》中展開(kāi)討論。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多