Linux Bash:如何将$var的值放入"$"中,使其大于 9 的 $($var) $var?



我需要$是变量$a$($a(将等于1$value_of_a1(因此可以打印编号为"a"的命令的OPTIONS(。

例如:如果a=5,我需要bash调用$5[1

./hello.sh qq ww ee rr tt 

;tt";是选项吗№5( ,所以我需要

echo $5

但我不知道如何通过a而不是手动键入$5使其工作

我试过这样的

"${$a}"

这个

"${0+$a}"

后来甚至发现eval

eval b=( '$'"$a" )

因此在$b的位置中调用$b位置">$-->值_of_a-here&lt--";

但是eval只给出第一个数字,所以如果a=112$b1打印OPTION1|1,因为它将是1作为字符串添加(,而不是31

所以如果有

./hello.sh q w e r t y u i o p g
a=11
eval b=( '$'"$a" )
echo $b

则输出为

q1

而不是

g

似乎更大的$9一个人根本做不到。有可能吗?(我听说一个带有发送选项的命令的1行受到32字节的限制,或者大约是这样;也许它就在这里?(

有人能帮忙吗?

您需要使用大括号来访问9以上的位置参数。

此外,bash对间接寻址使用了特殊语法:

$ set -- q w e r t y u i o p g
$ echo $11
q1
$ echo ${11}
g
$ a=11
$ echo $a
11
$ echo ${$a}
bash: ${$a}: bad substitution
$ echo ${!a}
g
$

你读到的32字节限制可能是指";bang-path";。我目前找不到确切的参考,但Perl文档中指出:

历史上,一些操作系统在32个字符的后无声地中断了#!行的内核解释

最新更新