(*) 和 (“$(ls)”) 有什么区别?

(*) 和 (“$(ls)”) 有什么区别?

(*)和 和有什么区别("$(ls)")

除了分隔符不同之外,它们本质上是相同的吗?

答案1

第一个,(*)通配符当前目录中的文件和目录列表并创建一个列表。您可以将该列表分配给一个数组变量,每个文件名将是其自己的条目。

touch 'a b' c
d=(*)
printf "> %s <\n" "${d[@]}"
> a b <
> c <

第二个,(“$(ls)”),调用ls以列出当前目录。生成的文件和目录列表被放入单个字符串中并分配给一个列表。该列表包含由换行符分隔的名称集组成的单个元素。

d=("$(ls)")
printf "> %s <\n" "${d[@]}"
> a b
c <

第一个更好,因为文件名被正确地发布到列表的各个元素中,并且解析 的输出ls通常充满了意想不到的复杂性

相关内容