Shell編程之執行后返回


title: Shell編程之執行后返回
tags: shell編程,執行后返回


前言

今天一個同事問我這樣一個問題,腳本里面有一個函數調用了exit是不是整個腳本都會退出,當時我給出的是肯定的回答,但是這種完全是沒有考慮清楚。這種情況,要分不同的調用方式來分情況討論的。

基本知識點

  1. 我們知道shell函數里面,退出時基本上有兩種方式:return和exit。return退出方式的返回值0-255,此時只是退出了這個函數。而exit退出的方式,是退出這個進程。這兩種返回方式都可以通過$?,常見的退出方式基本上需要用echo打印出想要的值。比如以下代碼:
    function test() {
     echo "result"
     return 1
     }
     a=$(test)
     echo $?
     echo $a
     
     上面代碼的返回值結果是:
     result
     1
    
  1. shell里面,調用命令并獲得其返回值我們一般通過以下方式來調用 $()``,但是這種的調用方式是新開一個進程來完成里面的命令來執行的,所以里面的命令如果有exit,只是執行這個命令的進程退出了,而調用者是不會退出的。所以,我們通過這種方式調用函數或者命令時,需要在主進程里面再次進行判斷其返回值,然后再決定怎么往下走。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容