在一個shell腳本,這是很麻煩:替代設置+ E
#!/bin/sh -e
# [...]
set +e
command-that-is-allowed-to-fail
set -e
# [...]
它看起來容易出錯了。
有沒有更好的方法來做到這一點?
(順便說一句,答案出現在評論到a partially related question.然而,問題和答案都沒有出現在計算器上,作爲一個適當的問題和答案,據我所知)。
在一個shell腳本,這是很麻煩:替代設置+ E
#!/bin/sh -e
# [...]
set +e
command-that-is-allowed-to-fail
set -e
# [...]
它看起來容易出錯了。
有沒有更好的方法來做到這一點?
(順便說一句,答案出現在評論到a partially related question.然而,問題和答案都沒有出現在計算器上,作爲一個適當的問題和答案,據我所知)。
是,有一個更好的方法—,或者無論如何,有一個更習慣,更terser,更容易出錯的方式。
#!/bin/sh -e
# [...]
command-that-is-allowed-to-fail || true
# [...]
看看如何工作?如果command-that-is-allowed-to-fail
失敗,||
操作員將控制權交給內置的true
。後者除此之外什麼都不做:它永遠不會失敗。
順便提一下,還有一個false
命令,除此之外它什麼都不做:它總是失敗。但是,在某些shell(如Dash)中,false
不是內建的,因此您可能在某些情況下必須將其作爲/bin/false
或類似名稱來調用它。
注意
一個導師教我關於2004年這個技術我懷疑,我會發現我自己的技術,因爲它是不明顯的給我。儘管這種技術簡單而有吸引力,但一旦人們熟悉這種技術。自從學習技術以來,我已經廣泛使用它。你也可以。
感謝您發現重複。我一直無法找到它。我的問題並不完全相同,事實證明,因爲另一個問題特別關注Bash。但是,它已經足夠接近它來關閉它了。 – thb