until
ユーザーに繰り返し数字を求めるループを含むスクリプトを作成する必要があります。 - 50回でない場合、「間違った番号です。もう一度お試しください」というメッセージが表示されます。 - 別の番号をリクエストしてください。 - 数字が50の場合、「成功しました!」というメッセージを表示して停止します。
これが私が今まで持っているものです:
echo -n "please choose a number: "
read number
until [$number -eq 50];
do
if [$number !=50]
then
echo "Wrong number; try again"
read wrong
else
echo -n "Please choose a number: "
read newnum
fi
done
「番号を選択してください」ステートメントを繰り返す方法がわかりません。私はいつもエラーが発生します。
syntax error near unexpected token 'fi'
オンラインで探していますが、UNTILループの入出力の明確な例はありません。
ベストアンサー1
echo -n "please choose a number: "
read number
until [ $number -eq 50 ]
do
# if [ $number -ne 50 ]
# then
echo "Wrong number; try again"
read number
# fi
done
echo You got it\!
最初のread
変数はから読み込まれますnumber
。ループは50になるuntil
まで続きます。$number
ループ内のテストは、数値が50(等しくない)until
の場合にのみ入るため、不要です。-ne
あなたが持っている主な問題は、read
ループ内で設定チェック()number
とuntil
同じ変数を更新する必要があることです。
if
スペースで囲まれた次の単語がコマンド名であるため、スペースも重要です。[$number
入力したが「[」というプレフィックスが付いた項目を評価します。これは、既存のコマンドの名前ではない可能性が高いです。たとえば、最初の推測がある場合、コマンド42
はif
コマンドを実行しようとし、[42
次のエラーが発生します。[42: not found
。
また、数値比較は、、、、、-eq
を-lt
使用して行われます。-ge
-gt
-ge
-ne
=
そして=!
文字列の場合。