コマンド mvn clean を bash スクリプトで実行したいと考えています。しかし、私はそれをif文に入れたいです。clean が適切に実行されない場合は、echo ステートメントを使用して bash スクリプトを終了したいと考えています。問題の原因となっているコードは次のとおりです。それから
$(mvn clean) を if ステートメントの中に入れてみましたが、引数が多すぎて端末に表示されませんでした。これが可能かどうか誰にもわかりますか?ありがとう!
これがあなたが望むものです:
mvn clean
if [ "$?" -ne 0 ]; then
echo "Maven Clean Unsuccessful!"
exit 1
fi
説明:
$?
直前に実行されたコマンドの終了コード (正常に終了したかどうか) を含む特別なシェル変数です。-ne
test
ビルトイン のオプション[
です。「等しくない」という意味です。ここでは、終了コードmvn clean
がゼロでないかどうかをテストしています。echo "Maven Clean Unsucccessful!"
- この場合、何らかの指示メッセージを出力し、スクリプト自体を誤った終了コードで終了します。実行する$(mvn clean)
と、代わりに実行する新しいサブシェルが生成され、そのサブシェルで出力されたすべてが実行中から親シェルで使用された場所にmvn clean
ダンプされます。stdout
mvn clean
$(...)
または、次のこともできます。
mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }
これは、同じことを行うための簡略化された構文糖衣です。
終了ステータスをチェックするために括弧は必要ありません:
if mvn clean ; then
echo ok
else
echo Something went wrong.
exit 1
fi