2010-07-20 54 views
1

我很难找出将多个变量正确连接在一起的方法。这个想法是随着时间的推移收集几个项目(在本例中为“foo”,“bar”和“baz”),然后连接成一个字符串(例如:X =“foo bar baz”)。Bourne Shell:如何连接需要评估的变量?

以下是到目前为止我已经把代码:

#!/bin/sh 
N=0 
# assign foo 
eval "DATA${N}='foo'" 
eval "echo First value is: \$DATA$N" # First value is: foo 
N=`expr $N + 1` 

# assign bar 
eval "DATA${N}='bar'" 
eval "echo Next value is: \$DATA$N" # Next value is: bar 
N=`expr $N + 1` 

# assign baz 
eval "DATA${N}='baz'" 
eval "echo Last value is: \$DATA$N" # Last value is: baz 

for i in 0 1 2 
do 
     # concatenate foo bar and baz into one variable 
done 

在for循环是我在现在的麻烦领域的评论。任何帮助将非常感激。谢谢!

回答

2

你只需要逃避的第一个eval通$操作符:

blob= 
for i in 0 1 2 
do 
    eval blob="\$blob\$DATA${i}" 
done