だからこのコードに問題があります。実行しようとすると、メッセージ行12:0:コマンドが見つかりません。
#!/bin/bash
let results=0;
echo "First number please"
read num1
echo "Second mumber"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ]
then
results=$((num1+num2))
elif [ "$Op" = "s" ]
then
results=$((num1-num2))
elif [ "$Op" = "d" ]
then
results=$((num1/num2))
elif [ "$Op" = "m" ]
then
results=$((num1*num2))
fi
答え1
elif は最後の else と同様に有効なキーワードではありません。使用:
If *condition 1*
#Do Something
elif *condition 2*
#Do Something Else
else
#Do this as a last resort
fi
Else If は、bc の答えのように文字列に変換しない場合は else が必要です。
答え2
シェルスクリプトを次のコードに変更しましたが、ゼロ除算エラーが発生し続けても動作します。
#!/bin/bash
let results=0;
echo "First number please"
read num1
echo "Second number"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
results=`echo "$num1+$num2" |bc `
elif [ "$Op" = "s" ]; then
results=`echo "$num1-$num2" |bc `
elif [ "$Op" = "d" ]; then
results=`"$num1/$num2" |echo bc`
elif [ "$Op" = "m" ] ; then
results=`echo "$num1*$num2"|bc`
else
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
fi;
echo $results
答え3
完了しました。|bc
何らかの理由で、私が使用していた端末と互換性がないため、削除する必要がありました。$(($num1+$num2))
答えを提供しないため、結果行をこの形式で入れる必要があります。以前は、演算結果ではなく入力のみを表示していました。最終コードは次のとおりです。
let results=0;
echo "First number please"
read num1
echo "Second mumber"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
results="$(($num1+$num2))"
elif [ "$Op" = "s" ]; then
results="$(($num1-$num2))"
elif [ "$Op" = "d" ]; then
results="$(($num1/$num2))"
elif [ "$Op" = "m" ] ; then
results="$(($num1*$num2))"
else
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
fi;
echo "$results"