[英]Glob that doesn't match anything expands to itself, rather than to nothing
我想迭代一個特殊類型的文件夾(如.test
)中的文件:
所以我寫了一個小腳本名稱for_loop
:
for f in *.test
do
echo 'This is f: '${f}
done
之后( chmod +x for_loop
)我可以用./for_loop
啟動它。
如果有.test
-files,everthing就可以了,但是如果文件夾中沒有匹配*.test
的文件,for循環仍然執行一次。 在這種情況下,輸出看起來像:
This is f: *.test
但我認為如果文件夾中沒有與glob模式匹配的文件,則沒有輸出。 為什么不是這樣?
這是默認行為。
要擺脫它,啟用nullglob
:
shopt -s nullglob
nullglob將非匹配的globs擴展為零參數,而不是自身。
...
如果沒有nullglob,glob會在空目錄中擴展為文字*,導致錯誤計數為1。
或者使用zsh
,默認情況下啟用了這個glob!
$ for f in *.test; do echo "$f"; done
zsh: no matches found: *.test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.