Bash:適切な終了ステータスを提供する実行可能ファイルを実行する


32

Linuxで実行可能ファイルを実行し、それが返す終了ステータスに関係なく、適切な終了ステータスを返します。(つまり、エラーなし。)

(これは、私が使用sh -exしているため、1つの(特定の)コマンドが失敗してもスクリプトを実行し続けたいためです。)

回答:


47

これを試してみてください:

command || true

からman bash

失敗したコマンドがwhileまたはuntilキーワードの直後のコマンドリストの一部である場合、予約語ifまたはelifの後に続くテストの一部、&&または⎪⎪リストで実行されるコマンドの一部である場合、シェルは終了しません最後の&&またはfollowingに続くコマンド、パイプライン内の最後以外のコマンド、またはコマンドの戻り値が!で反転されている場合。


また良いもの:)
voretaq7

1

試す(executable ; exit 0)か、常に0を終了するシェルスクリプトでラップします。


1
これはほとんどの場合うまく機能しますが、サブシェルをセットアップするので、たとえば(cd foo; exit 0)成功した場合、以前にあったcwdにcwdが返されるので、後で "foo"になりません。ただし、cd foo || true成功すると「foo」のままになります。
追って通知があるまで一時停止します。

良い点-プロセスに追加の副作用(環境変数の設定、ディレクトリの変更など)がある場合、これはうまくいきません。
voretaq7
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.