REOPEN:在参数扩展中执行算术扩展?

REOPEN:在参数扩展中执行算术扩展?

请重新打开。这不是重复的,因为在这里我问为什么它不起作用,而不仅仅是为了解决方法。


Bash 手册说

波形符扩展,参数和变量扩展,算术展开和命令替换(以从左到右的方式完成)

如果我明白的话http://unix.stackexchange.com/a/270324/674正确地,“从左到右”意味着“大括号扩展、波形符扩展、参数和变量扩展、算术扩展和命令替换”具有相同的优先级。

那么是否可以在参数扩展中使用算术扩展呢? (即一级递归)

如果不是,那么考虑到“波形符扩展、参数和变量扩展、算术扩展和命令替换(以从左到右的方式完成)”,为什么算术扩展不能在参数扩展中工作?

如果是,怎么办?

例如,

$ set hello world
$ echo $2
world
$ echo ${$((1+1))}
bash: ${$((1+1))}: bad substitution

我希望

  • 首先扩展$((1+1))${$((1+1))}.2
  • 然后${2}world.

谢谢。

答案1

eval为此,您需要或 间接:

eval echo \${$((1+1))}
index=$((1+1))
echo ${!index}

相关内容