取消设置shell脚本的IFS值

时间:2014-04-29 10:47:26

标签: shell ksh aix ifs

在我的用例中,我想将IFS的值更改为已知的分隔符(-)。我尝试了以下方法:

OLDIFS=$IFS
IFS='-'
for x in $*
do
    echo $x
done
IFS=$OLDIFS

使用时,例如-a b -c d作为输入字符串我希望输出为

a b
c d

然而,我得到的是

a
b
c
d

我在AIX

2 个答案:

答案 0 :(得分:1)

我尝试了你的代码,我得到了

a b
c d

试试这个

$ cat >a <<.
#!/bin/sh
OLDIFS=$IFS
IFS='-'
for x in $*
do
    echo $x
done
IFS=$OLDIFS
.
$ chmod +x a
$ ./a "-a b -c d"

a b
c d
$

答案 1 :(得分:1)

以下是使用awk获取此输出并避免所有IFS操作的一种方法:

s='-a b -c d'
echo "$s" | awk -F ' *- *' '{print $2 RS $3}'
a b
c d