在我的用例中,我想将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
。
答案 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