だからこれは私のコードです
#! /bin/bash
echo -n "Please enter the first integer: "
read $num1
echo -n "Please enter the second integer: "
read $num2
if [[ "$num1" -eq "$num2" ]];
then
echo "$num1 is -eq $num2"
fi
このプログラムの問題は、印刷されず、ステートメントの後の値がtrueであること$num1
です$num2
。
しかし、整数入力と比較をよりよく処理する方法はありますか?
答え1
@Bodoが言ったように、あなたのread
声明は間違っています。
command がある場合、read $num1
シェルは num1 値 ("fred" と仮定) を探し、それを実行してread fred
入力行を取得し、変数 fred に保存します。
(場合によっては)num1に現在の値がない場合、シェルが実行され、read
その値が変数に保存されますREPLY
。
一般的に言えばいつも変数を参照してください。これを行うと、read "$num1"
シェルがread ""
変数を有効な名前ではなく空の文字列に変換すると、エラーメッセージが表示されます。