2017-03-20 15 views
0

私は0から10の間の数字をタイプするようになっているはずのwhileループをセットアップし、その入力に基づいてさまざまな応答を与えます。しかし、プログラムを実行するときに、0,5、または10が入力されていなければ、一度表示するのではなく、以下の応答の1つを無限ループします。彼らは(入力MOD 5 = 0)、0、5、または10を入力するまで真のループ要求が無限にループしている間に

INPUTMOD=0 
echo "Please enter a number from 0-10, inclusive" 
read INPUTMOD 

while true 
do 
    if [ "$INPUTMOD" -lt 0 ] || [ "$INPUTMOD" -gt 10 ]; then 
     echo "Please enter a number between 0 and 10, inclusive" 
    elif [ "$INPUTMOD" -eq 0 ] || [ "$INPUTMOD" -eq 5 ] || [ "$INPUTMOD" -eq 10 ]; then 
     echo "Your input is congruent with _ mod 5 = 0. Congratulations!" 
     break 
    else 
     echo "Please enter a number between 0 and 10, inclusive." 
    fi 
done 

このループの全体的な目的は、連続的に0と10の間の数をユーザに促すことです。非数字キーが押されると、ユーザーに無限に正しい数字を入力するよう促す。

これに関するすべてのヘルプは非常に高く評価されています!

EDIT:私の教授の指導のとおり、while、else、lt、およびgtがすべて必要です。

+0

サイドノートを待ちます。これはあなたがおそらく計算するように要求された学習の割り当てのようだとして一致するオプションを列挙するのではなく、モジュロです。 – RuDevel

+1

0より小さい数と10より大きい数がないので、最初の条件は決して発生しません。 –

+0

この特定の質問は、「真のループ要求を使用すると、-ltコマンドと-gt比較コマンドを使用して入力mod 5 = 0で終了するまで、データを受け入れて表示します。私はmod 5 = 0であるかどうかを調べる数値を入力すると解釈し、trueの場合はループを破棄し、falseの場合は継続的にプロンプ​​トを表示します。私はまだシェルには比較的新しいので、実際にこの全体の質問を間違っていますか? – Ibrahim

答えて

1

あなたは、いくつかのロジックを混乱している:何の数が同じ時間10よりも0未満と大きくなることはできませんので

if [ "$INPUTMOD" -lt 0 ] && [ "$INPUTMOD" -gt 10 ]; then 

if [ "$INPUTMOD" -lt 0 ] || [ "$INPUTMOD" -gt 10 ]; then 

でなければなりません。 および

elif [ "$INPUTMOD" -eq 0 ] || [ "$INPUTMOD" -eq 5 ] [ "$INPUTMOD" -eq 10 ]; then 

は不完全です。正確に何が分からないのでしょうか?)

そして:あなたのwhileループは永遠に実行されると予想されます。あなたは新しい番号を尋ねるだけでなく、それを受け入れることは良いことだと言いませんか?

+0

あなたは私および/または演算子で私を得て、私はそれを調整しましたが、10を超える数値が入力されても、プログラムは無限にループしています。どのように私はそれを修正するつもりだろうか分からない。 ええ、エリフの場合、2番目の演算子があります。ここに入力するのを忘れました。一定。 – Ibrahim

+0

@Ibrahimは私の編集を見ます。ループが初めて再実行されたときに何が起こるか考えてみましょう。ユーザーインタラクションはいつ行われ、新しい番号が許可されますか? – RuDevel

+0

編集:私はちょうど読み込みINPUTMODを使用し、それはトリックを行ったようです。ご協力いただきありがとうございます。 – Ibrahim

0

条件が間違っているなら、あなたは自分のコードはこのような何かを変え、数の

を依頼する必要があり、

は、doneステートメントの前に次のステートメントを追加します

read INPUTMOD 

、それはそれです。

だから今、それは、数連続 を要求しませんこれは、1つの時間を尋ねると、あなたの入力

関連する問題