BASH - 位置参数

时间:2013-02-22 06:15:42

标签: bash

我想知道这是否可行:

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}:错误替换

提前致谢

2 个答案:

答案 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`