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

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

私は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ほとんどのシェル/実装では機能しますが)。

答え2

while :無限ループです。:何もしません(成功的に)。

したがって、何もせずにシェルが永遠にぶら下がりたい場合は、次のように書くことができます。

while :
do
    :
done

;または改行の代わりに1行で使用してください。while :; do :; done

while :通常、特別な条件を付けずに何かを繰り返し実行したいときに使用されます。ループ内ではcontinue、ステートメントを使用してbreakループを制御したり、条件を構文のようにループの末尾に移動したりできますdo ... while

答え3

ただし、whileの後のステートメントはTRUEまたはFALSEでなければなりません。

いいえ、条件付きコマンドはどのコマンド(*)でもかまいません。みんなシェルコマンドにはいくつかの戻り値があり、whileループ(およびif条件)は戻り値0を「true」として扱い、他のすべての値は「false」として扱います。(*または複数のコマンドのリスト、最後のコマンドが有効です)

に関しては:バッシュマニュアル返品状況とは何か明確に記載されています。

: [arguments]
パラメータの拡張とリダイレクトの実行以外は何もしません。戻り状態は 0 です。

組み込み機能がhelpより明確になりました。

 $ help :
 [...]
 No effect; the command does nothing
 Exit Status:
 Always succeeds.

関連情報