0

当我有一些值的变量时,我在获取参数值时遇到问题。我的意思是:

例子:

./script 12 13 14 15 16

value=5
echo $value #now I see 5
$"$value" #now I want to get 16 but I don't know how to do it?
4

4 回答 4

4

使用间接

echo "${!value}"

值 16 不需要引号,但应该在变量包含特殊字符的情况下使用。

于 2012-05-06T19:52:13.780 回答
1

也试试这个:

value=5              #
echo "$value"        # 5 
echo ${@:$value:1}   # give you 1 arg starting from $value in the arg list     
于 2012-05-06T20:03:13.517 回答
0

您需要取消引用该变量

value=5
echo "$value"      # 5
echo "${!value}"   # will give you $5 or in your example 16
于 2012-05-06T19:52:21.673 回答
0

bashism 本质上是不可移植的。如果您依赖 ${!...} 来评估表达式,您的脚本将只能在 bash 中运行。这可能不是问题,但如果脚本的作者幸福地没有意识到缺乏可移植性,那就是一个问题。如果不依赖 bashism,这种事情是微不足道的。如果要评估字符串,请使用 eval:

eval echo \$$value
于 2012-05-06T20:50:33.063 回答