我需要$是变量$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<--";
但是eval只给出第一个数字,所以如果a=112$b1打印OPTION1|1,因为它将是1作为字符串添加(,而不是31 所以如果有 则输出为 而不是 似乎更大的$9一个人根本做不到。有可能吗?(我听说一个带有发送选项的命令的1行受到32字节的限制,或者大约是这样;也许它就在这里?( 有人能帮忙吗?./hello.sh q w e r t y u i o p g
a=11
eval b=( '$'"$a" )
echo $b
q1
g
您需要使用大括号来访问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个字符的后无声地中断了
#!
行的内核解释