2010-07-20 6 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 

Комментарий в течение петли является областью У меня возникли проблемы прямо сейчас. Любая помощь приветствуется. Благодаря!

ответ

2

Вы просто должны уйти от $ оператора для первого прохода Eval:

blob= 
for i in 0 1 2 
do 
    eval blob="\$blob\$DATA${i}" 
done 
Смежные вопросы