Bourne Shell:如何连接需要评估的变量?

时间:2010-07-20 22:21:02

标签: sh

我无法找到将几个变量正确连接在一起的方法。这个想法是随着时间的推移收集几个项目(在这种情况下“foo”,“bar”和“baz”),然后连接成一个字符串(例如:X =“foo bar baz”)。

以下是我到目前为止编写的代码:

#!/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-loop中的注释是我现在遇到麻烦的区域。任何帮助将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您只需要转义第一个eval传递的$运算符:

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