bashシェルスクリプトの `if($ num1 -eq 0)|| ($ num2 -eq 0)`に何が起こりますか?

bashシェルスクリプトの `if($ num1 -eq 0)|| ($ num2 -eq 0)`に何が起こりますか?

私のコード:

#!/bin/bash
read num1
read num2
if ($num1 -eq 0) || ($num2 -eq 0) 
 then exit
else 
 echo "$(($num1+$num2))"
 echo "$(($num1-$num2))"
 echo "$(($num1*$num2))"
 echo "$(($num1/$num2))"
fi

このコードを実行すると、次のエラーが発生します。

./txt: line 4: 1: command not found
./txt: line 4: 1: command not found

num1 = <any number>次のように入力すると、なぜこれらのエラーが表示されるのかわかりません。num2 = <any number>

ベストアンサー1

文法エラー。ダブルおよび/またはシングル/ダブルの(( ))組み合わせが必要です。==[ ]

これらはうまく動作します:

if [ $num1 -eq 0 ] || [ $num2 -eq 0 ] #mind the gap between brackets and vars.... 

または

if (($num1==0)) || (($num2==0))

二重括弧構文は、bash の算術拡張ロジックに準拠する数値にのみ使用できます。

文字列または数値変数には、単一または二重括弧を使用できます。

おすすめ記事