有没有办法在bash中这样做? echo $$((2-1))

时间:2014-02-27 23:24:18

标签: bash shell

我在$ 1到$#中有几个字符串。我想执行一个简单的算术表达式,并根据表达式的#来回显$的值。

例如。设置file1 file2 file3 file4

我想回显$ 2(file2),但是使用了一个算术表达式“echo $$((3-1))”,我认为它会解析为2美元,但是bash只会引发错误。

2 个答案:

答案 0 :(得分:3)

使用变量间接:

set -- foo bar baz
var=$((1+1))
echo "${!var}"   

这将打印$2的值,即“bar”。

答案 1 :(得分:0)

使用子字符串扩展运算符:

$ set -- file1 file2 file3 file4
$ echo ${@:$((3-1)):1}
file2