Unix Calculator.bashの問題

Unix Calculator.bashの問題

これはUnixで数値を計算するために書いたbashスクリプトです。

echo "Please enter the calculation(operation) type (+)(-)(*)(/)"
        read $opr
echo "Enter the first number"
        read $num1
echo "Enter the second number"
        read $num2
if [[ $opr = "+" ]]; then
        num=$(($num1 + $num2))
                echo "The sum is = $num"
elif [[ $opr = "-" ]]; then
        num=$(($num1 - $num2))
                echo "The sum is = $num"
elif [[ $opr = "*" ]]; then
        num=$(($num1 * $num2))
                echo "The sum is = $num"
elif [[ $opr = "/" ]]; then
        num=$(($num1 / $num2))
                echo "The sum is = $num"
fi

実行されますが、「合計は=」であり、数値を提供しません。この問題の原因は何ですか?

ベストアンサー1

現在の入力を受け取る方法が間違っているようで、read数学がまったく行われず、答えがない状態になります。この部分だけを変更すると、残りのコードが機能します。

読む方法

最初に公開されたコードからの抜粋は、次のように最初の数字を保存しようとしていることを示しています。

echo "Enter the first number"
        read $num1

代わりに-p、プロンプトを使用してドル記号なしで変数名を指定してください。コマンドプロンプトで以下をテストして確認numすることもできます。read -p ...

$ read -p "Enter the first number" num1
Enter the first number:

今1を入力してください。

$ read -p "Enter the first number" num1
Enter the first number: 1

これで、echo $num1値が正常に表示されます。

$ echo $num1
1
  • -p the_prompt_textヒントを含むメソッドです。
  • と比較して末尾に戻り行を追加しますechoechoしかし-p、そうではないので、私のように余分なスペースを置く方が良いです。コロンの後に:スペースがあることに注意してください"Enter the first number: "。これは、ユーザーの入力がコロンの右側に表示されないようにするためです。
  • 応答を含む変数を指定するときに正しい読み取り構文は含まれません$readnum1

readこれにより、スクリプトのさまざまな部分を調整でき、正しく機能します。

おすすめ記事