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

如何在bash中获取第n个位置参数?,bash,arguments,command-line-arguments,Bash,Arguments,Command Line Arguments,如何在Bash中获取nth位置参数,其中n是变量?读取 及 $0:第一个位置参数 1美元$9:参数列表元素从1到9如果N保存在变量中,请使用 eval echo \${$N} 如果它是经常使用的话 echo ${12} 自 意思不一样 使用Bash的间接功能: #!/bin/bash n=3 echo ${!n} 运行该文件: $ ./ind apple banana cantaloupe dates 产生: cantaloupe 编辑: 您还可以执行阵列切片: echo ${@:

如何在Bash中获取
n
th位置参数,其中
n
是变量?

读取

$0:第一个位置参数


1美元$9:参数列表元素从1到9

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

eval echo \${$N}
如果它是经常使用的话

echo ${12}


意思不一样

使用Bash的间接功能:

#!/bin/bash
n=3
echo ${!n}
运行该文件:

$ ./ind apple banana cantaloupe dates
产生:

cantaloupe
编辑:

您还可以执行阵列切片:

echo ${@:$n:1}
但不是数组下标:

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

${12}
$12
之间有什么区别?您好,
$12
表示
$1
和字符
2
${12}
表示第12个参数。@AlexanderOleynikov它导致“错误替换”错误;我假设是因为
@
(和
*
)是“特殊参数”,并且因为它们不是有效的数组名
${@}
确实引用了编号的参数,但是
@
不是一个数组,因此没有实现对它的解析支持,而例如“
${unsetvariable}
”将生成空输出,因为它是一个有效的数组/变量名,只是还没有设置(我想这些异常是在bash的源代码中专门处理的). 我试图在man bash中找到更好的理由,但浏览@让我失去了耐心;p这个答案没有回答OP最初的问题。他特别询问如何通过存储在变量中的索引获取参数。
echo ${@[n]}  #  WON'T WORK