2014-02-06 92 views
0

我目前遇到了一個棘手的問題,目前我還找不到任何解決方案。Bash腳本 - 嵌套變量

我寫了一個這樣的腳本:

#!/bin/sh 
x=1 
while [ "$x" -le $# ]; do 
echo "$x"'. Argument is: ' "\$$x" 
x="$(($x + 1))" 
done 

我建議外殼會計算表達式「\ $$ X」擴大變量以訪問參數上的位置X之後,但在輸出:

1. Argument is: $1 

請幫忙。 Thx提前。

回答

1

這裏是修復

$ cat a.sh 
#!/bin/sh 

x=1 
while [ "$x" -le $# ]; do 
echo "$x"'. Argument is: ' "${!x}" # If you need indirect expansion, use ${!var} is easier way. 
x="$(($x + 1))" 
done 

測試結果

$ sh a.sh a b c 
1. Argument is: a 
2. Argument is: b 
3. Argument is: c 
+0

謝謝你的答案。修復工程在bash上,但我仍然遇到了問題,因爲我在我的DD-Wrt路由器上編寫了腳本,它帶有busybox v1.22.0和一個'ash'實現,它提出以下內容: 'syntax error:bad substitution' – IlikePepsi

0

此代碼應工作:

#!/bin/sh 
x=0 
args=([email protected]) 
while [ "$x" -lt $# ]; do 
    echo "$x"'. Argument is: ' "${args[${x}]}" 
    x="$(($x + 1))" 
done