我不了解bash手册中有关前缀参数扩展的内容。
bash manual这样说:
${!prefix*}
${!prefix@}
扩展为其名称的变量名称 以前缀开头,由IFS特殊字符的第一个字符分隔 变量。如果使用“ @”,并且扩展名出现在双倍 用引号引起来,每个变量名都扩展为一个单独的词。
[当我以重击执行此操作时:
aaa=1
aab=2
aac=3
echo "${!aa@}"
结果输出是这样:aaa aab aac
按预期工作。但是,问题是,当我使用echo "${!aa*}"
时,我得到的输出是相同的,并且我不了解其中的区别。
echo
将其所有参数合并为一行。尝试使用printf
来查看差异。
$ aaa=1
$ aab=2
$ aac=3
$ printf '%s\n' "${!aa@}"
aaa
aab
aac
$ printf '%s\n' "${!aa*}"
aaa aab aac
$ IFS=,
$ printf '%s\n' "${!aa*}"
aaa,aab,aac