Bash

(*) 和 (“$(ls)”) 有什麼區別?

  • July 4, 2020

(*)和 和有什麼不一樣("$(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通常充滿了意想不到的複雜性

引用自:https://unix.stackexchange.com/questions/596745