1. ホーム
  2. linux

[解決済み】コマンドが失敗した場合、どのように終了しますか?重複

2022-04-01 23:54:57

質問

私はシェルスクリプトの素人です。コマンドに失敗した場合、メッセージを表示してスクリプトを終了させたいと思います。私は試してみました。

my_command && (echo 'my_command failed; exit)

が、うまくいきません。スクリプトのこの行に続く命令が実行され続けてしまいます。Ubuntuとbashを使用しています。

どうすればいいですか?

試してみてください。

my_command || { echo 'my_command failed' ; exit 1; }

4つの変更点

  • 変更点 &&||
  • 使用方法 { } の代わりに ( )
  • 導入する ;exit
  • の後のスペース { の前と }

メッセージを表示し、コマンドが失敗したとき(ゼロ以外の値で終了したとき)だけ終了したいので、以下のように || ではなく && .

cmd1 && cmd2

が実行されます。 cmd2 ときに cmd1 成功(終了値 0 ). ここで

cmd1 || cmd2

が実行されます。 cmd2 ときに cmd1 が失敗する(終了値が0でない)。

使用方法 ( ) は、その中のコマンドを サブシェル を呼び出したり exit この場合、元のシェルではなくサブシェルが終了するため、元のシェルで実行が継続されます。

この問題を解決するには { }

最後の2つの変更はbashが必要とするものです。