title: Shell編程之執行后返回
tags: shell編程,執行后返回
前言
今天一個同事問我這樣一個問題,腳本里面有一個函數調用了exit是不是整個腳本都會退出,當時我給出的是肯定的回答,但是這種完全是沒有考慮清楚。這種情況,要分不同的調用方式來分情況討論的。
基本知識點
- 我們知道shell函數里面,退出時基本上有兩種方式:return和exit。return退出方式的返回值0-255,此時只是退出了這個函數。而exit退出的方式,是退出這個進程。這兩種返回方式都可以通過$?,常見的退出方式基本上需要用echo打印出想要的值。比如以下代碼:
function test() { echo "result" return 1 } a=$(test) echo $? echo $a 上面代碼的返回值結果是: result 1
- shell里面,調用命令并獲得其返回值我們一般通過以下方式來調用 $() 和 ``,但是這種的調用方式是新開一個進程來完成里面的命令來執行的,所以里面的命令如果有exit,只是執行這個命令的進程退出了,而調用者是不會退出的。所以,我們通過這種方式調用函數或者命令時,需要在主進程里面再次進行判斷其返回值,然后再決定怎么往下走。