(*)
和 和有什么区别("$(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
通常充满了意想不到的复杂性