通过变量访问位置参数
Posted
技术标签:
【中文标题】通过变量访问位置参数【英文标题】:accessing a positional parameter through a variable [duplicate] 【发布时间】:2016-12-06 03:58:03 【问题描述】:我正在尝试使用变量访问位置参数。
即如果我定义一个变量为 1,我想访问第一个位置参数,如果我定义它为 2,我想访问第二个位置参数。
示例: bash script.bash arg1 arg2 arg3
var=2
echo $var // will only echo no. 2
??? // insert your command to echo the 2nd positional parameter (arg2)
这个可以吗?
【问题讨论】:
是的!谢谢。但只是为了让其他读者更容易 - 你可以这样访问它:$!var,即 ehco $!var 将回显 arg2 但是该解决方案会使脚本的可移植性降低,请参阅我的回答后面的 cmets。 【参考方案1】:做
[[ "$var" -eq "1" ]] && echo "$1" #for positional parameter 1
等等,或者你可以像下面这样:
#!/bin/sh
var=2
eval echo "\$$var" # This will display the second positional parameter an so on
编辑
如果我真的需要在 echo 之外访问,我该如何使用它。为了 例如“如果 [ -f \$$var ]”
你指出的最好的方法:
var=2
eval temp="\$$var"
if [ -f "$temp" ] # Do double quote
then
#do something
fi
【讨论】:
呃,这在一般情况下不是很可扩展。 Bash 有$!var
以避免使用 eval
我添加了 bash 标签,因为 OP 在他们的示例中有这个标签,但我有点犹豫。
好的,我明白了——你提前声明了变量。 IE。 var=2 评估 var2="\$$var" .
很好,感谢关于可移植性的说明。以上是关于通过变量访问位置参数的主要内容,如果未能解决你的问题,请参考以下文章