第一个, (*)
, globs 当前目录中的文件和目录列表并创建一个列表。您可以将该列表分配给一个数组变量,每个文件名将是其自己的条目。
touch 'a b' c
d=(*)
printf "> %s <\n" "${d[@]}"
> a b <
> c <
Run Code Online (Sandbox Code Playgroud)
第二个,(“$(ls)”)
,调用ls
以列出当前目录。生成的文件和目录列表被放入一个字符串并分配给一个列表。该列表包含由换行符分隔的一组名称组成的单个元素。
d=("$(ls)")
printf "> %s <\n" "${d[@]}"
> a b
c <
Run Code Online (Sandbox Code Playgroud)
第一个更好,因为文件名正确地发布到列表的各个元素中,并且解析 的输出ls
通常充满了意想不到的复杂性