私はスクリプトの引数($ 1、$ 2、$ 3)を使用して基本計算を実行するcalc.shというスクリプトを作成しようとしています。たとえば、./calc.sh 10/5の結果として2を取得したいとします。
私が始めた方法は次のとおりです。
if [ $2 -eq "+" ] ; then res=`expr $1 + $3` ; echo "$res" ; fi
しかし、うまくいきません。次の結果が表示されます。 Line 2: [+: 整数式が必要です。
これで、比較に==を使用し、/を除くすべての項目でうまく機能します。これでコードは次のようになります。
if [ $2 == "+" ] ; then res=`expr $1 + $3` ;
elif [ $2 == "-" ] ; then res=`expr $1 - $3` ;
elif [ $2 == "x" ] ; then res=`expr $1 \* $3` ;
elif [ $2 == "/" ] ; then res=`expr $1 \/ $3` ;
else res=`Operación no válida` ;
fi ; echo "$res"
ただし、しようとすると、次のメッセージ./calc.sh 10 / 5
が表示されます。 "行 4: 10/5: 構文エラー: 無効な算術演算子 (エラー要素は"\5")... ああ、これを入力しながら $1/$3 でなければならないことに気づきました。 .
:)
ベストアンサー1
bash
シェルを使用している場合は、次のことを試すことができます。
if [ $2 == "+" ] ;then
res=$(($1 + $3))
echo $res
fi
編集する
'
次の行を変更します(byで置き換えられます"
)。
else res=`Operación no válida` ;
到着する:
else res="Operación no válida" ;
編集2
if else
あまりにも多くのステートメントを使用する代わりに、Caseステートメントを使用できます。
case $2 in
+)
res=`expr $1 + $3`
;;
-)
res=`expr $1 - $3`
;;
/)
res=`expr $1 \/ $3`
;;
x)
res=`expr $1 \* $3`
;;
*)
res="Operación inválida"
;;
esac
echo "$res"