2016-05-20 11 views
-1

untilステートメントまたはifステートメントがあるかどうかによって異なる結果になるのはなぜですか?"if"と "until"はbashスクリプトで異なる結果を示します

# compare dates 

a=12 
b=8 

if [ $a -le $b ]; then 
    echo "it is not less than using if" 
fi 

until [ $a -le $b ] 
do 
    echo "it is less than using until !?!?!?" 
done 

if文は、彼らが完全に同じ条件であっても、失敗しますが、永遠にuntilの文を印刷します。どうして?

ありがとうございます。これは本当に私の理解に役立ちます。

+0

「until condition」は「while not条件」と同等です。すなわちwhile while condition == false – anishsane

+0

unitlループは、conditionがfalseのときに実行されます。 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_03.html –

+0

は、おそらく条件文とループ構造に慣れることから始めます。そして、はるかに明確になります。 –

答えて

4

彼らはまったく同じ条件であっても

これは正しくありません。 ifの文では、「条件がの場合は、次を実行します。」と表示されます。 untilステートメントは、 "条件がである場合、であり、条件がの場合は、のままであれば実行し続けます。

あなたはwhileの声明を考えているかもしれません。 whileの文では、条件がの場合は(条件がの場合はのままであれば実行してください)という条件が成立した場合は、以下を実行します。

0

ifは分岐演算子で、untilはループ演算子です(条件が満たされるまでループします)。あなたのケースでは条件が満たされない(12は8以下ではない)ので、aとbの値に関して一貫性のない情報が返ってくると無期限にループします。

< = bのときは "それを使用している以上ではない"というメッセージが表示され、a> bのときは何もしません。

関連する問題