2013-07-18 15 views
0

我想用一個bash腳本調用其他腳本的Debian的bash shell變量替換錯誤

#!/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

我在做什麼錯?

回答

4

使用bash,您可以用!做的間接引用:

echo ${!a} 
+0

解決了它。謝謝。 –

1

我給威廉Pursell的給予好評。另一種方式做,這是賦值給一個數組(這將是0相對):

list=("[email protected]") 
a=0 
echo ${list[a]} 
a=1 
echo ${list[a]} 
2

另一種方式來做到這一點:

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

您可以調整,要決定用什麼會發生奇數個參數。

+0

這也將工作,因爲我的腳本將永遠不會有數量的參數。謝謝。 –