Bash中间接扩展与参数转换混用的异常行为疑问
问题:Bash中间接扩展判断数组类型的异常行为
我们可以通过${变量名@a}的方式判断数组类型:索引数组会输出a,关联数组会输出A,示例如下:
$ declare -a a $ declare -A b $ echo ${a@a} a $ echo ${b@a} A
但使用间接扩展(通过变量指向数组名)时,这个方法会失效:
$ var=a $ echo ${!var@a} $ var=b $ echo ${!var@a} $
而当我们显式初始化数组后,间接扩展的判断又恢复正常:
$ a=() $ b=() $ var=a $ echo ${!var@a} a $ var=b $ echo ${!var@a} A $
请问这是Bash的预期行为还是Bug?使用的Bash版本为:
$ bash --version GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu) [...]
内容的提问来源于stack exchange,提问作者LHLaurini
相关产品推荐
相关产品推荐

