【发布时间】:2014-06-15 06:16:19
【问题描述】:
在我的用例中,我想将 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。
【问题讨论】:
-
确保您将一个参数传递给您的 shell 脚本。
./foo "-a b -c d"应该会产生你想要的结果 -
您的预期结果是错误的,这将返回一个空行,然后是
a b,然后是c d。如果您从IFS中删除空格,它们将不会用作分隔符,从而导致第一个标记为空,第二个标记中有一个尾随空格。 -
是的,空行没问题,我只想返回一个原子令牌
a b@AdrianFrühwirth -
@Aymanadou 但是
a b!=a b。 -
@Aymanadou 哦...请不要烘焙您自己的参数解析器,请改用
getopts。