[英]Bash: Pattern Matching/Filename Expansion
因此,我目前傾向於使用Bash腳本,並且對模式匹配和文件名擴展之間的區別感到困惑。
《 Bash參考手冊》顯示:
拆分單詞后,除非
-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters
,否則-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters
*'-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters
?', and
['。 如果出現這些字符之一,則將該單詞視為一個模式,並替換為與該模式匹配的按字母順序排序的文件名列表。
對我來說,這表明以下內容可能不應該執行我們想要的操作:
if [[ $a == [cb]at* ]] ; then ...
在這種情況下, [cb]at*
不會擴展到上面引號所示的以cat或bat開頭的文件列表,但其作用更像是一個非常有限的正則表達式。 為什么? 字符*?[何時充當正則表達式,而不是擴展為當前目錄中的匹配文件?
bash對[[ ... ]]
的標記進行不同的解釋。 這是一個功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.