gpt4 book ai didi

arrays - bash中echo "${array[@]}"echo "${array[*]}"有什么区别

转载 作者:行者123 更新时间:2023-11-29 09:47:28 27 4
gpt4 key购买 nike

我用 echo "${array[@]}"echo "${array[*]}" 得到了相同的结果。
如果我这样做:
mkdir 假音乐; touch fakemusic/{Beatles,Stone,Ramones,Doors}{001..199}; cd fakemusic.
然后_msc=(*)
这两个命令给我相同的输出:

echo "${_msc[@]}"  
echo "${_msc[*]}"

那么它们之间有什么区别。

最佳答案

Shell 将 "${_msc[@]}" 展开为单独的字符串,同时将 "${_msc[*]}" 展开为单个字符串,默认情况下,项目以空格分隔。您看不出 echo 的区别,因为它也使用空格作为分隔符。以下是 printf 的示例:

$ printf "%s;%s;%s\n" "${_msc[@]}"
a;b;c
$ printf "%s;%s;%s\n" "${_msc[*]}"
a b c;;

shell 变量IFS 控制使用哪个字符作为分隔符。如果你改变它,你也可以看到 echo 的区别:

$ IFS='|'
$ echo "${_msc[*]}" # shell expands to a single string
a|b|c
$ echo "${_msc[@]}" # shell expands to a separate string
a b c

关于arrays - bash中echo "${array[@]}"echo "${array[*]}"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28980907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com