簡體   English   中英

如何在shell腳本中捕獲Gradle退出代碼?

[英]How to capture the Gradle exit code in a shell script?

我想捕獲Gradle任務的返回碼 這是一個執行任務的小型bash腳本草稿

#!/bin/bash

gradlew_return_code=`./gradlew assembleDebug`
echo ">>> $gradlew_return_code"
if [ "$gradlew_return_code" -eq "0" ]; then
    echo "Gradle task succeeded."
else
    echo "Gradle task failed."
fi

該腳本存儲返回值,而是在搖籃任務的整個控制台輸出。


請注意,示例腳本是一個更復雜的腳本的簡化,我需要捕獲返回值。

退出狀態是$? 命令替換捕獲輸出

./gradlew assembleDebug; gradlew_return_code=$?

...或者,如果你需要與set -e兼容(我強烈建議不要使用 ):

gradlew_return_code=0
./gradlew assembleDebug || gradlew_return_code=$?

......或者,如果你需要捕獲兩者:

gradlew_output=$(./gradlew assembleDebug); gradlew_return_code=$?
if (( gradlew_return_code != 0 )); then
  echo "Grade failed with exit status $gradlew_return_code" >&2
  echo "and output: $gradlew_output" >&2
fi

請注意,我建議將捕獲放在與調用相同的行上 - 這樣可以避免修改,例如在捕獲之前添加調試命令以修改返回代碼。


但是,您根本不需要捕獲它: if shell中的語句對它們所包含的命令的退出狀態進行操作,那么您可以將命令本身放入,而不是執行檢查捕獲的退出狀態的測試操作。 if的COMMAND部分:

if ./gradlew assembleDebug; then
  echo "Gradle task succeeded" >&2
else
  echo "Gradle task failed" >&2
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM