2014-03-03 103 views
3

在編寫源代碼另一個文件的bash時,如果某些條件爲真,有時我想跳過處理。現在,我已經可以:停止處理源文件並繼續

  1. 環繞整個子文件中嵌套的if語句
  2. 包裝紙調用源文件中嵌套的if語句

這兩種策略有一定的缺點。這會是好多了,如果我能有這樣的代碼風格寫我的劇本:

main.sh

echo "before" 
. other 
echo "after" 

other.sh

# guard 
if true; then 
    # !! return to main somehow 
fi 
if true; then 
    # !! return to main somehow 
fi 

# commands 
echo "should never get here" 

是否有辦法要這樣做echo "after"主要被調用?

回答

4

是的,你可以return

if true; then 
    return 
fi 

引用help return:從外殼功能

return: return [n]

返回。

導致函數或源腳本以N指定的返回值 退出。如果省略N,則返回狀態是在函數或腳本中執行的最後一個命令的返回狀態。

退出狀態: 返回N,如果shell沒有執行函數或腳本,則返回失敗。

+0

不行!我不知道爲什麼我認爲它不會做任何事情(因爲這是其他語言的典型模式)。我的生活再次完成。 –

+0

@thedeeno它的確如此!它的目的是:_causes一個函數或源腳本_ ... – devnull