变量作为列表

时间:2015-02-23 16:58:57

标签: ksh

我在Solaris 2.10上使用ksh“Version 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正确地使用它? 感谢。

2 个答案:

答案 0 :(得分:0)

在回声时尝试引用:

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                                                                                                         

答案 1 :(得分: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