Bashでコマンドが成功したかどうかを確認する方法
スクリプトを書くときやコマンドを実行するとき、成功したかどうかを知ることは理にかなっています。Linuxでは、コマンドを実行すると、実行されたコマンドが成功したかどうかを確認するための終了コードが得られます。他のコマンドの出力に依存するコマンドを実行する場合は、最初のコマンドの終了コードを取得して、他のコマンドが実行されるかどうかを判断する必要があります。このガイドでは、Bashでコマンドが成功したかどうかを確認する2つの方法に焦点を当てています。
bashでコマンドが成功したか確認する2つの方法
Bashでコマンドを実行すると、必ず終了コードまたはステータスを返す必要があります。返された値を評価するために「if」文を使用するか、特別な変数($?)を使用して実行されたコマンドの終了コードまたはステータスを確認できます。それでは詳しく見ていきましょう。
1. BashのIf文を使う
「if」文を使うことで、式内で実行されるコマンドの戻り値を評価することができます。「if」文は終了ステータスを取得します。あなたの式に応じて、if-else条件文で次に実行するコマンドが実行されます。
たとえば、現在のディレクトリ内のテキストファイルを削除するスクリプトを作成し、コマンドが実行されれば成功メッセージを返し、コマンドが成功しなければ失敗メッセージを返すことができます。
chmodコマンドを使用してスクリプトを実行可能にします。そして、それを実行します。
私たちのコマンドは成功しないため、失敗メッセージが表示されることに注意してください。しかし、コマンドが成功すれば、異なる出力が得られます。
Bashでコマンドを実行する際に同じ概念を使用できます。特定のコマンドが成功しない場合、次のコマンドが実行されないことを確認するための指定された出力を表示するようにします。最初のコマンドがすでに失敗しているためです。
2. 特殊変数($?)の使用
特殊変数($?)は、最後に実行されたコマンドの終了コードを返します。終了コードがゼロを返す場合、それはコマンドが成功したことを意味します。ただし、他の番号が返された場合は、そのコマンドが成功しなかったことを意味します。
コマンドが正常に成功したかを確認するために特別な変数を使用するには、終了コードがゼロであるかどうかを確認するためにバイナリ比較演算子(eq)を使用する必要があります。そうでない場合は、if-else 条件文の else 部分が実行されます。
スクリプトでコマンドを実行してください。次に、コマンドが実行されたかどうかをチェックするためのif-else条件文を追加します。以前の例を以下のように特別な変数を使うように編集しましょう:
スクリプトを実行すると、削除するテキストファイルがないため、成功しなかったことを確認する出力が返されます。したがって、“if” の部分ではなく、else 部分のコマンドが実行されます。
現在のディレクトリにテキストファイルがあると仮定しましょう。異なる出力を得ることができます。ここでは、成功メッセージが得られています。これは、終了コードが成功したため「if」セクションと一致したことを意味します。
前回のケースでは、コマンドは成功しました。表示された出力メッセージに基づいて確認することができ、コマンドの終了コードがゼロであることを確認しています。
結論
Bashでコマンドが成功したかどうかを確認する一般的な方法は2つあります。コマンドが成功したかどうかに応じて出力を表示するために、条件付きのif-else文を使用できます。または、特別な変数($?)を使用して、実行されたコマンドの終了コードまたはステータスをif-else文を使って確認することもできます。





