2015-02-23 61 views
0

我在Solaris 2.10上使用ksh“版本M-11/16/88i”。作为列表的变量

我在列表中遇到了一些问题。

第一个例子工程,我想:

#!/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 2015-02-23 17:01:51

回答

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

非常感谢!我证明了一切。 – 2015-02-23 17:39:26

0

尝试在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