8

コマンド mvn clean を bash スクリプトで実行したいと考えています。しかし、私はそれをif文に入れたいです。clean が適切に実行されない場合は、echo ステートメントを使用して bash スクリプトを終了したいと考えています。問題の原因となっているコードは次のとおりです。それから

$(mvn clean) を if ステートメントの中に入れてみましたが、引数が多すぎて端末に表示されませんでした。これが可能かどうか誰にもわかりますか?ありがとう!

4

3 に答える 3

24

これがあなたが望むものです:

mvn clean
if [ "$?" -ne 0 ]; then
    echo "Maven Clean Unsuccessful!"
    exit 1
fi

説明:

  • $?直前に実行されたコマンドの終了コード (正常に終了したかどうか) を含む特別なシェル変数です。
  • -netest ビルトイン のオプション[です。「等しくない」という意味です。ここでは、終了コードmvn cleanがゼロでないかどうかをテストしています。
  • echo "Maven Clean Unsucccessful!"- この場合、何らかの指示メッセージを出力し、スクリプト自体を誤った終了コードで終了します。

実行する$(mvn clean)と、代わりに実行する新しいサブシェルが生成され、そのサブシェルで出力されたすべてが実行中から親シェルで使用された場所にmvn cleanダンプされます。stdoutmvn clean$(...)


または、次のこともできます。

mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }

これは、同じことを行うための簡略化された構文糖衣です。

于 2012-11-30T19:27:51.890 に答える
7

終了ステータスをチェックするために括弧は必要ありません:

if mvn clean ; then
   echo ok
else
   echo Something went wrong.
   exit 1
fi
于 2012-11-30T19:28:13.223 に答える