我可以在这个变量得到这个值的Linux巴什] 我的代码我怎么能在这个变量得到这个值的Linux巴什]
#!/bin/bash
COUNTER=1
"user$COUNTER"=text
echo "$user$COUNTER"
结果:1 我需要的结果是:文字
我可以在这个变量得到这个值的Linux巴什] 我的代码我怎么能在这个变量得到这个值的Linux巴什]
#!/bin/bash
COUNTER=1
"user$COUNTER"=text
echo "$user$COUNTER"
结果:1 我需要的结果是:文字
一般情况下,使用动态变量名工作像你想只会令你的生活更加艰难。阵列更容易一起工作(即使在它bash的挑剔语法:
#!/bin/bash
counter=1
declare -a user # this line is optional
user[$counter]=text
echo "${user[$counter]}"
诀窍是EVAL
eval user$COUNTER=text
输出:
/home/shellter:>eval "user$COUNTER"=text
/home/shellter:>echo $user1
text
评估和演示进行可变评价在命令行上的任何可见的变量,然后“重新提交”的结果正常命令行评价和处理。
你可以看到一些这种情况发生的与set -vx
打开外壳调试(一旦你有工作了一段时间就会变得很明显)。
我希望这会有所帮助。
P.S.因为你似乎是一个新用户,如果你得到一个可以帮助你的答案,请记住将它标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。
您还需要'EVAL回声$用户$ COUNTER' - 你必须EVAL要取消引用“化合物”任何时候变量。 –
@glennjackman其实EVAL回声\ $用户$ COUNTER – abc
非常感谢你,格伦·杰克曼 – pir8