2014-10-31 80 views
0

我不知道如何用英语问这个问题,但我希望将变量的值作为新变量... 该脚本也有一个循环,其数目越来越多,并在最后我想有变量VAR1,VAR2等BASH变量值作为新的已定义变量

我想这样的:

COUNT=$(echo 1) 
DEFINE=$(echo VAR$COUNT) 
$DEFINE=$(echo gotcha!) 

当我尝试这种方式,我有这样的错误消息:

~/script.sh: line n: VAR1=gotcha!: command not found 

我用括号和引号打了一下,但它没有工作......任何解决方案?

+0

该问题标有'bash'。你为什么不使用'bash'数组? – John1024 2014-10-31 18:04:42

+0

为什么在命令替换中使用'echo'?这真的很愚蠢。改用这个:'count = 1','define = var $ count'。现在对于最后一个,你可以使用'printf -v'$ define''%s''gotcha!''。 – 2014-10-31 18:06:25

回答

1

您可以使用declare来创建这样的“动态”变量,但使用数组可能是更好的选择。

COUNT=1 
DEFINE="VAR$COUNT" 
declare "$DEFINE=gotcha" 
+0

谢谢。这完全解决了我的具体问题。还要感谢所有其他贡献者。作为新手,我肯定会爱上StackOverflow ^^。 – 2014-11-05 23:29:57

2

问题在于,bash因扩展而不是赋值而期待命令。 VAR1=gotcha!不是命令,因此是错误。

这将是更好的使用数组:

COUNT=$(echo 1) 
VAR[COUNT]='gotcha!' 
echo ${VAR[COUNT]} 

我想$(echo 1)代表更复杂的命令,否则你可以只使用COUNT=1

+2

无需使用回声 – Hackaholic 2014-10-31 18:08:26