set -eが切り替えられても次のbash行を実行する方法[冗長]

set -eが切り替えられても次のbash行を実行する方法[冗長]

次のようなものがあるとしましょう。

set -e;
echo 'doing some stuff'
false;
status=$?
post_hook send-message-elsewhere-with-status $status

私が望むことを行う1つの方法は次のとおりです。

set -e;
echo 'doing some stuff'
(
set +e
false;
status=$?
post_hook send-message-elsewhere-with-status $status
)

しかし、他の方法はありますか?

ベストアンサー1

あなたの質問は、実際に達成したいことが何であるかを決定するために多くの文脈を提供しませんが、男乱交明らかにset -e、ゼロ以外の終了状態が受信されると、スクリプトは直ちに終了します。失敗したコマンドでない限り:

  • whileorキーワードの直後のコマンドのリストuntil
  • ifまたは予約語の後のテストelif
  • &&||最後または次のコマンドを除いて、またはリストから実行されるすべてのコマンド。&&||
  • 最後のコマンドを除くパイプライン内のすべてのコマンドまたは
  • コマンドの戻り値が'!'

したがって、サブシェルに加えて、コマンドを一部としてスケジュールし、コマンドがゼロ以外の戻りで失敗した場合に次の行を実行するためのいくつかのオプションがあります。

おすすめ記事