ゼロで除算を無視またはキャプチャします。

ゼロで除算を無視またはキャプチャします。

Bashでゼロ除算エラーを無視する方法は?

例 1: (動作しない)

echo $((1/0)); echo "yay";
echo $((1/0)) || echo "yay";

例2:

echo -n $(echo -n $((1/0))) 2> /dev/null; echo "yay";

0で除算する場合、特定の値をデフォルトとして使用する例2よりも簡単な方法はありますか?

ベストアンサー1

Bashにはゼロで除算する方法はなく、ash、ksh93、pdksh、zshも同様です。ゼロで除算する唯一の方法は、除算が発生する前に検出するか(除算を実行する前に各分母を確認する)、サブシェルで除算を実行することです。

サブシェルで算術演算を実行している場合は、サブシェルの終了状態を使用してエラーが発生したかどうかを確認できます(ゼロまたは他のエラーに分割)。

x=$(echo $(($a/$b)))
if [ $? -ne 0 ]; then
  echo "$b is 0 or some other arithmetic error occurred"
fi

おすすめ記事