今天当我查看脚本的日志时, 我发现一个命令(unrar)失败了(“程序已中止”)但没有报告错误,
这是我的剧本摘录:
unrar ...|tail -10 >> unrar.log #I found "Program Aborted" here
if [[ "${?}" -ne "0" ]]
then
echo "[ERROR] unrar application failed with $? errorcode"
else
echo "[INFO] unrar application succeeded"
这是由于我的脚本或系统本身有问题吗?
答案 0 :(得分:4)
$?变量包含最后一个命令的退出状态。在你的情况下,这是“tail”命令的退出状态,它没有失败。在bash中,您要查找的退出状态位于PIPESTATUS数组中。您可以迭代数组以查看最后一个管道中的任何命令是否存在非零存在状态。
failed=false
for status in "${PIPESTATUS[@]}"; do
if (( status != 0 )); then
failed=true
break
fi
done
if $failed; then
echo "[ERROR] unrar application failed with $status errorcode"
else
echo "[INFO] unrar application succeeded"
fi