You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 22:12:02