我想知道这是否可行:
scriptname:testing
#! /bin/bash
i=2
arg=`echo "$"$i`
echo $arg #value should be the value of $2 and not just '$2' string
echo $2
exit 0
命令:testing a b
输出
$2
b
有没有办法让$ arg的值等于$ 2的值,即“b”而不只是显示字符串“$ 2”,而不是直接将$ 2的值分配给$ arg,arg = $ 2 ?
尝试这样做arg = echo ${$i}
但是我收到了这个错误:测试:$ {$ i}:错误替换
提前致谢
答案 0 :(得分:8)
是;您可以使用间接扩展,如下所示:
i=2
arg="${!i}" # equivalent to: arg="$2"
见§3.5.3 "Shell Parameter Expansion" in the Bash Reference Manual的第四段。
答案 1 :(得分:-1)
eval也有帮助:
arg=`eval echo "$"$i`