我想检索$ @的第n个参数(传递给脚本的命令行参数列表),其中n存储在变量中.
我试过$ {$ n}.
例如,我想获取调用的第二个命令行参数:
./my_script.sh alpha beta gamma
Run Code Online (Sandbox Code Playgroud)
索引不应该是显式的,而是存储在变量n中.
源代码:
n=2
echo ${$n}
Run Code Online (Sandbox Code Playgroud)
我希望输出为"beta",但我收到错误:
./my_script.sh: line 2: ${$n}: bad substitution
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
nos*_*sid 32
您可以使用变量间接.它独立于数组,在您的示例中工作正常:
n=2
echo "${!n}"
Run Code Online (Sandbox Code Playgroud)
编辑: 变量间接可以在很多情况下使用.如果有变量foobar,则以下两个变量扩展会产生相同的结果:
$foobar
name=foobar
${!name}
Run Code Online (Sandbox Code Playgroud)
kon*_*nqi 11
试试这个:
#!/bin/bash
args=("$@")
echo ${args[1]}
Run Code Online (Sandbox Code Playgroud)
好吧用一些$ n或者其他东西替换"1"......
可移植的(非 bash 特定的)解决方案是
$ set a b c d
$ n=2
$ eval echo \${$n}
b
Run Code Online (Sandbox Code Playgroud)