1

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です。

4

2 に答える 2

1

すべての操作を使用してこの出力を取得しawk、回避する1 つの方法を次に示します。IFS

s='-a b -c d'
echo "$s" | awk -F ' *- *' '{print $2 RS $3}'
a b
c d
于 2014-04-29T13:06:06.590 に答える
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
$
于 2014-04-29T10:52:42.963 に答える