如何在bash中获取第n个位置参数?
如何在Bash中获取如何在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 ${@:
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