$ {!prefix @}使用'@'且扩展名出现在双引号中

问题描述 投票:1回答:1

我不了解bash手册中有关前缀参数扩展的内容。

bash manual这样说:

${!prefix*} ${!prefix@}

扩展为其名称的变量名称 以前缀开头,由IFS特殊字符的第一个字符分隔 变量。如果使用“ @”,并且扩展名出现在双倍 用引号引起来,每个变量名都扩展为一个单独的词。

[当我以重击执行此操作时:

aaa=1
aab=2
aac=3
echo "${!aa@}"

结果输出是这样:aaa aab aac

按预期工作。但是,问题是,当我使用echo "${!aa*}"时,我得到的输出是相同的,并且我不了解其中的区别。

bash
1个回答
1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.