私はwhile
ループが何であるかを知っています。しかし、私はそれが次にのみ動作するのを見ました。
while [condition]
while ![condition]
while TRUE (infinite loop)
次のドアはまたはでwhile
なければなりません。TRUE
FALSE
というシェル組み込みコマンドがあります:
。何もしないダミー命令だと説明されていますが、ここでも同じか、 になれるのかTRUE
わかりませんFALSE
。何か違うかもしれませんが、何?
ベストアンサー1
構文は次のとおりです。
while
first list of commands
do
second list of commands
done
最初のコマンドのリスト(つまり、そのリストの最後の実行)が成功する限り、2番目のコマンドのリストを繰り返します。
内部に最初のコマンドのリストさまざまなテストにこのコマンドを使用することも、何も実行せずに成功した場合にnullを返すコマンドや他のコマンドを[
使用することもできます。:
while :; do cmd; done
cmd
常に繰り返し実行し:
、常に成功について報酬を与えます。これは永遠にリングの形。このtrue
コマンドを使用してより明確にすることができます。
while true; do cmd; done
人々は常に組み込まれている:
ことを好みました(長い間、現在ほとんどのシェルには組み込まれています)。:
true
true
表示できる他のバリエーションは次のとおりです。
while [ 1 ]; do cmd; done
[
上記では、「1」文字列が空でないか(したがって常に真であるか)テストするコマンドを呼び出します。
while ((1)); do cmd; done
C構文を((...))
模倣するには、Korn / bash / zsh構文を使用してください。while(1) { ...; }
それとももう少し複雑ですuntil false; do cmd; done
...until ! true
時には、次のようにエイリアスが割り当てられます。
alias forever='while :; do'
だからあなたはこれを行うことができます:
forever cmd; done
この状況を知る人はほとんどいない。リスト注文する。たとえば、人々が次のように書いているのを見ることができます。
while :; do
cmd1
cmd2 || break
cmd3
done
書くことができる場合:
while
cmd1
cmd2
do
cmd3
done
それは言葉になるリストwhile cmd1 && cmd2; do...; done
コマンドリストなどの操作を行う場合が多いためです。
とにかく、これは他のコマンドと同じように[
(現代のBourneのようなシェルに組み込まれていますが)//条件リストで単独で使用する必要はなく、if
これらの条件リストは他のコマンドよりも特別ではありません。コマンドこのコマンドを複数回使用してください。while
until
¹:
さらに短く、引数を許可します(無視)。引数を渡す場合true
またはの動作は指定されません。false
たとえば、次のようにできます。
while : you wait; do
something
done
ただし、次の動作は次のとおりです。
until false is true; do
something
done
指定されていません(false
ほとんどのシェル/実装では機能しますが)。