[英]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.