"間 :)" とはどういう意味ですか?意味は?

私はwhileループが何であるかを知っています。しかし、私はそれが次にのみ動作するのを見ました。

while [condition]
while ![condition]
while TRUE (infinite loop)

次のドアはまたはでwhileなければなりません。TRUEFALSE

というシェル組み込みコマンドがあります:。何もしないダミー命令だと説明されていますが、ここでも同じか、 になれるのか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

人々は常に組み込まれている:ことを好みました(長い間、現在ほとんどのシェルには組み込まれています)。:truetrue

表示できる他のバリエーションは次のとおりです。

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これらの条件リストは他のコマンドよりも特別ではありません。コマンドこのコマンドを複数回使用してください。whileuntil


¹:さらに短く、引数を許可します(無視)。引数を渡す場合trueまたはの動作は指定されません。falseたとえば、次のようにできます。

while : you wait; do
  something
done

ただし、次の動作は次のとおりです。

until false is true; do
  something
done

指定されていません(falseほとんどのシェル/実装では機能しますが)。

おすすめ記事