JJD*_*JJD 7 bash shell exit-code gradle
我想捕获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
Run Code Online (Sandbox Code Playgroud)
该脚本不存储返回值,而是在摇篮任务的整个控制台输出.
请注意,示例脚本是一个更复杂的脚本的简化,我需要捕获返回值.
Cha*_*ffy 12
退出状态为$?.命令替换捕获输出.
./gradlew assembleDebug; gradlew_return_code=$?
Run Code Online (Sandbox Code Playgroud)
...或者,如果您需要兼容性set -e(我强烈建议不要使用):
gradlew_return_code=0
./gradlew assembleDebug || gradlew_return_code=$?
Run Code Online (Sandbox Code Playgroud)
......或者,如果你需要捕获两者:
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
Run Code Online (Sandbox Code Playgroud)
请注意,我建议将捕获放在与调用相同的行上 - 这样可以避免修改,例如在捕获之前添加调试命令以修改返回代码.
但是,您根本不需要捕获它:ifshell中的语句对它们所包含的命令的退出状态进行操作,因此您可以将命令本身放在其中,而不是放置检查已捕获的退出状态的测试操作.您的COMMAND部分if:
if ./gradlew assembleDebug; then
echo "Gradle task succeeded" >&2
else
echo "Gradle task failed" >&2
fi
Run Code Online (Sandbox Code Playgroud)