我有几个字符串在$1到$#。我想执行一个简单的算术表达式,并根据表达式的 # 回显出 $ 的值。
例如,设置文件1 文件2 文件3 文件4
我想回显 $2 (file2),但使用算术表达式"echo $$((3-1))",我认为它会解析为 $2,但 bash 只是抛出一个错误。
使用变量间接寻址:
set -- foo bar baz
var=$((1+1))
echo "${!var}"
这将打印$2
的值,即"bar"。
使用子字符串扩展运算符:
$ set -- file1 file2 file3 file4
$ echo ${@:$((3-1)):1}
file2