如何在 Bash 中忽略除以零错误?
示例 1:(不起作用)
echo $((1/0)); echo "yay";
echo $((1/0)) || echo "yay";
Run Code Online (Sandbox Code Playgroud)
示例 2:
echo -n $(echo -n $((1/0))) 2> /dev/null; echo "yay";
Run Code Online (Sandbox Code Playgroud)
有没有比示例 2 更简单的方法,当遇到被零除时,默认为特定值。
Bash 没有办法捕获除数为 0 的情况,ash、ksh93、pdksh 或 zsh 也没有。捕获除数为 0 的唯一方法是在除法发生之前检测它们(在执行除法之前检查每个分母)或在子 shell 中执行除法。
如果您在子 shell 中进行算术运算,则可以使用子 shell 的退出状态来了解是否发生了错误(除以 0 或其他错误)。
x=$(echo $(($a/$b)))
if [ $? -ne 0 ]; then
echo "$b is 0 or some other arithmetic error occurred"
fi
Run Code Online (Sandbox Code Playgroud)