Debian Bash Shell变量替换错误

时间:2013-07-18 22:12:12

标签: linux bash shell debian

我想使用bash脚本来调用其他脚本

#!/bin/bash
./anotherScript $1 $2
./anotherScript $3 $4
#and so on

我不知道会传递多少变量,因此我使用变量'i'从0运行到$#并尝试获取$ {$ i}作为参数。 但是Bash给了我一个糟糕的替换错误。我尝试过以下方法:

a=1
echo $a
echo ${$a} #doesn't work
echo ${${a}} #doesn't work

它们都不起作用。我期待$ {$ a}来评估$ {1},这应该给我第一个参数。我查看了手册页以及bash脚本指南on the Linux Documentation Project site

我做错了什么?

3 个答案:

答案 0 :(得分:4)

使用bash,您可以使用!

进行间接引用
echo ${!a}

答案 1 :(得分:2)

另一种方法:

while [ $# -gt 0 ]
do
    ./anotherscript $1 $2
    shift 2
done

你可以调整它来决定奇数个参数会发生什么。

答案 2 :(得分:1)

我给了威廉·普尔塞尔一个赞成票。另一种方法是为数组赋值(相对于0):

list=("$@")
a=0
echo ${list[a]}
a=1
echo ${list[a]}