.bashrcからエラーコードを返すことができるコマンド

.bashrcからエラーコードを返すことができるコマンド

.bashrcエラーコードを返すことができるコマンドの出力と同じ変数を内部的に設定したいと思います。

私はこのようなことをしたときの結果を知りません。このコマンドが失敗しても、他のすべてはうまくいきますか?

現在のコードは.bashrc簡単です。

export MYVAR=$(my_dubious_command 2>/dev/null)

これは安全ですか?

答え1

しよう:

$ var=$(false)
$ echo $?
1
$

ただし、.bashrcにこれを設定する可能性はほとんどなく、errexit次のコマンドはコマンドの終了コードを確認する可能性がはるかに低いため、影響はありません。

.bashrcなどの起動スクリプトは、実行できる操作の1つです。いいえset -o errexit単純なタイプミスや制御できない変更がシェルからブロックされる可能性があるため、これを行いたいと思います。エラーを検出しても失敗しない場合は、次のようにエラーをキャッチできます。

$ trap 'echo $?' ERR
$ var=$(false)
1
$

これは非常に便利です。早く、例えば。

答え2

asl0b0説明する、.bashrcがerrexitsetで実行される可能性はありませんが、テストによってこのケースを処理できます。

case $SHELLOPTS in
  (*errexit*)   set +e;
                export MYVAR=$(my_dubious_command 2>/dev/null);
                set -e
                ;;
  (*)           export MYVAR=$(my_dubious_command 2>/dev/null)
                ;;
esac

作成したとおり、コマンドは、後続のコマンドが無効なオプションを提供していないか、変数名が有効で存在しない関数をエクスポートしていないことをexport確認する場合は、0を返す必要があります。$?

Caseステートメントがerrexit設定されていることを確認し、設定されている場合は一時的にオフにして実行しますmy_dubious_command

関連情報