を結合?私はむしろそれをテストすることを恐れている。UNIXシェルグロブ
0
A
答えて
4
*.txt
の拡張は、通常、コマンドを実行する前にシェルによって実行されます。だから、いいえ、無限ループにはなりません。
「通常は」と言うのは、使用しているシェルに依存するからです。しかし、以下に示すように、私はbash
含めて、作品と経験をこのように持っていたすべてのシェル:
pax$ rm -rf *.xyzzy ; touch 1.xyzzy 2.xyzzy ; ls *.xyzzy
1.xyzzy 2.xyzzy
pax$ echo ===== ; for i in *.xyzzy ; do
> echo Processing $i
> echo ..... before touch ; ls *.xyzzy
> touch 3.xyzzy
> echo ..... after touch ; ls *.xyzzy
> echo =====
> done
=====
Processing 1.xyzzy
..... before touch
1.xyzzy 2.xyzzy
..... after touch
1.xyzzy 2.xyzzy 3.xyzzy
=====
Processing 2.xyzzy
..... before touch
1.xyzzy 2.xyzzy 3.xyzzy
..... after touch
1.xyzzy 2.xyzzy 3.xyzzy
=====
pax$ ls *.xyzzy
1.xyzzy 2.xyzzy 3.xyzzy
あなたは3
ファイルは、最初のループ反復の間に追加されたことに注意しますがは、すべてのループには影響しませんその展開はすでにその時点で行われているためです。
0
ループの内容が処理される前にグロブ展開が行われるため、無限ループは作成されません。
このようなことを試したい場合は、ulimitsをチェックして、控えめなCPU時間とテストするプロセスを設定してください。
関連する問題
- 1. UNIX
- 2. は、ウェブクラッカーは、UNIXではUNIXサーバ
- 3. UNIXファイル
- 4. はUNIX
- 5. UNIXプログラミング
- 6. UNIXシステムコールモニタ
- 7. UNIXエクスポートコマンド
- 8. CMake、Xcode、Unix Makefile
- 9. ssh portforwarding unix
- 10. Linux/UnixのwxCriticalSection
- 11. capistrano、unix user、permissions
- 12. .Net Framework on Unix
- 13. Unixソート問題
- 14. Unix selectシステムコール
- 15. UnixのC++タイマー
- 16. UNIXタイムスタンプとMYSQL
- 17. haskellとUnixシェルスクリプト
- 18. C Unix Pipes例
- 19. UNIXホスト上SFTP
- 20. Unix FIFO in go?
- 21. Unixの権限
- 22. freeBSD unixのfork
- 23. UNIXでのプロセスサイズ
- 24. UNIXマップ機能
- 25. msysgitのUnixパスワード
- 26. Java Unix Terminal
- 27. UNIX:部分パス
- 28. UNIXパイプ質問
- 29. UNIXコマンド - 無視「」
- 30. UnixオーディオシステムAPI
これはCシェルでも同様です。 'foreach i(* .xyzzy)... end'はbashと同じ結果を返します。 – turingtest37