2010-08-18 121 views

回答

217

With set +e。是的,它是落後的,你啓用外殼選項與set -禁用他們與set +。歷史葡萄乾,donchanow。

+0

非常感謝,它是相應手冊頁(http://www.faqs.org/docs/bashman/bashref_56.html)的最後一行,我沒有讀到最後。 – 2010-08-18 22:22:17

+0

bash手冊是巨大的,這是事實。 (僅供參考,因爲您似乎是新的:在您的問題的最佳答案下單擊複選標記已完成),這稱爲「接受」。) – zwol 2010-08-18 22:26:53

+0

格式'set [--abefhkmnptuvxBCHP] [ - o選項] [爭論...]真的很具誤導性。我簡單地認爲撤消是由另一個內建人員完成的,試圖解除鎖定而沒有任何東西。有趣的是,在bash中'set'和'unset'不是相反的,雖然我承認我目前對bash編程知之甚少。 – 2010-08-18 22:29:08

16
  • 使用+而不是 - 會使這些標誌關閉。

Source

55

這可能是不方便使用要覆蓋它每次set +e/set -e。我找到了更簡單的解決方案。

而不是做它像這樣的:

set +e 
command_that_might_fail_but_we_want_to_ignore_it 
set -e 

,你可以做這樣的:

command_that_might_fail_but_we_want_to_ignore_it || true 

,或者,如果你想節省按鍵,不介意是一個有點神祕:

command_that_might_fail_but_we_want_to_ignore_it || : 

希望這有助於!

+11

想知道':'的歷史,並找到我的答案[here](http://stackoverflow.com/a/3224910/1094541 ),以防其他人感到好奇。 – 3cheesewheel 2013-09-23 16:31:54

+2

只有當你不關心你正在運行的命令的返回碼時,這才適用。 – Isaac 2017-10-31 11:32:34

相關問題