2011-08-05 38 views

回答

4

一般情况下,使用动态变量名工作像你想只会令你的生活更加艰难。阵列更容易一起工作(即使在它bash的挑剔语法:

#!/bin/bash 
counter=1 
declare -a user # this line is optional 
user[$counter]=text 
echo "${user[$counter]}" 
+0

非常感谢你,格伦·杰克曼 – pir8

3

诀窍是EVAL

eval user$COUNTER=text 

输出:

/home/shellter:>eval "user$COUNTER"=text 
/home/shellter:>echo $user1 
text 

评估和演示进行可变评价在命令行上的任何可见的变量,然后“重新提交”的结果正常命令行评价和处理。

你可以看到一些这种情况发生的与set -vx打开外壳调试(一旦你有工作了一段时间就会变得很明显)。

我希望这会有所帮助。

P.S.因为你似乎是一个新用户,如果你得到一个可以帮助你的答案,请记住将它标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。

+1

您还需要'EVAL回声$用户$ COUNTER' - 你必须EVAL要取消引用“化合物”任何时候变量。 –

+1

@glennjackman其实EVAL回声\ $用户$ COUNTER – abc

相关问题