如何获取bash中的第n个位置参数?


Answers:


110

使用Bash的间接功能:

#!/bin/bash
n=3
echo ${!n}

运行该文件:

$ ./ind apple banana cantaloupe dates

产生:

cantaloupe

编辑:

您还可以进行数组切片:

echo ${@:$n:1}

但不是数组下标:

echo ${@[n]}  #  WON'T WORK

1
@AlexanderOleynikov它将导致“错误替换”错误;我假设是因为@(和*)是“特殊参数”,并且因为它们不是有效的数组名称?${@} 确实引用了带编号的参数,但@不是数组,并且未实现支持来解析它,例如,“ ${unsetvariable}”将产生空输出,因为它是有效的数组/变量名称,只是尚未设置(这些异常是我猜是在bash的源代码中专门处理的)。我试图在中找到一个更好的原因man bash,但是扫描@会使我失去耐心。; P
Victor Zamanian 2015年

12

如果N保存在变量中,请使用

eval echo \${$N}

如果经常使用

echo ${12}

以来

echo $12

不一样!


1
${12}和之间有什么区别$12
HelloGoodbye

3
@HelloGoodbye,您好,$12意思是$1和字符2${12}表示第12个参数。
Johannes Weiss


-3

正如在Bash by Example中看到的那样,您只需要使用自动变量$ 1,$ 2等。

$#用于获取参数数。


不幸的是,您不理解这个问题。${!n}记录下来是我不知道的答案。
Michael Shigorin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.