【发布时间】:2016-05-26 12:24:25
【问题描述】:
我想在 bash 中编写一个循环,该循环一直执行到某个命令停止失败(返回非零退出代码),如下所示:
while ! my_command; do
# do something
done
但是在这个循环中我需要检查返回的退出代码my_command,所以我尝试了这个:
while ! my_command; do
if [ $? -eq 5 ]; then
echo "Error was 5"
else
echo "Error was not 5"
fi
# potentially, other code follows...
done
但随后特殊变量? 在循环体内变为0。
显而易见的解决方案是:
while true; do
my_command
EC=$?
if [ $EC -eq 0 ]; then
break
fi
some_code_dependent_on_exit_code $EC
done
如何检查循环体内my_command(在循环头中调用)的退出代码,而无需使用带有上述中断条件的while true 循环重写此示例?
【问题讨论】:
-
离题了。这里是the same question on Unix.SE。