簡體   English   中英

與任何東西都不匹配的Glob會擴展到自身,而不是一無所有

[英]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

來自Greg的Wiki - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM