2015-02-23 2 views
0

Я нахожусь на Solaris 2.10 с ksh «Версия M-11/16/88i».Переменная в виде списка

У меня есть некоторые проблемы со списком в «for».

Первый пример работает, как я хочу:

#!/bin/ksh 
for i in ONE "one is 1" TWO "two is 2" THREE three 
do 
echo $i 
done 

Выход этого:

> ./mytest.ksh 
ONE 
one is 1 
TWO 
two is 2 
THREE 
three 
> 

Но, если я изменить код, чтобы что-то вроде этого:

#!/bin/ksh 
MYVAR="ONE \"one is 1\" TWO \"two is 2\" THREE three" 
echo "MYVAR=$MYVAR" 
for i in $MYVAR 
do 
echo $i 
done 

Затем выходной сигнал:

> ./mytest.ksh 
MYVAR=ONE "one is 1" TWO "two is 2" THREE three 
ONE 
"one 
is 
1" 
TWO 
"two 
is 
2" 
THREE 
three 
> 

Как я могу сохранить значения в переменной MYVAR, так как цикл FOR принимает это правильно? Спасибо.

+0

, что вам нужно? Всего одна строка? – SMA

ответ

0

Вот способ сделать это:

#!/bin/sh 
MYVAR="ONE \"one is 1\", TWO \"two is 2\", THREE three" 
export IFS=","; 
echo "MYVAR=$MYVAR" 
for i in $MYVAR 
do 
echo $i 
done 
+0

большое спасибо! Я доказал все. –

0

Try процитировать в то время как echoeing:

MYVAR="ONE \"one is 1\" TWO \"two is 2\" THREE three" 
echo "MYVAR=$MYVAR" 
for i in "$MYVAR" 
     ^ ^
do 
    echo $i 
done  
Output: 
MYVAR=ONE "one is 1" TWO "two is 2" THREE three                   
ONE "one is 1" TWO "two is 2" THREE three                           
Смежные вопросы