Bash
(*) 和 (“$(ls)”) 有什麼區別?
(*)
和 和有什麼不一樣("$(ls)")
?除了分隔符不同之外,它們本質上是否相同?
第一個,
(*)
, glob 目前目錄中的文件和目錄列表並創建一個列表。您可以將該列表分配給一個數組變數,每個文件名將是它自己的條目。touch 'a b' c d=(*) printf "> %s <\n" "${d[@]}" > a b < > c <
第二個
(“$(ls)”)
,呼叫ls
以列出目前目錄。生成的文件和目錄列表被放入單個字元串並分配給列表。該列表包含這個由換行符分隔的名稱集組成的單個元素。d=("$(ls)") printf "> %s <\n" "${d[@]}" > a b c <
第一個更好,因為文件名正確地發佈到列表的各個元素中,並且解析輸出
ls
通常充滿了意想不到的複雜性