我知道我可以将参数直接传递到环境中,如下所示:
parameter=value command
然而,正如我所料,它在下面的案例中并不起作用:
func()
{
for char in a b c
do
echo $char
done
}
while IFS= read line
do
echo "char: $line"
done <<< $(func)
这有输出:
char: a b c
一旦我这样做了:
IFS=
while read line
do
echo "char: $line"
done <<< $(func)
它运作得很好。输出是:
char: a
char: b
char: c
然而,我必须重置我想要规避的IFS
参数。我想知道背后的原因。
我使用GNU bash, version 4.3.42(1)-release (x86_64-apple-darwin15.0.0)
答案 0 :(得分:2)
这在bash
即将发布的4.4版本中得到修复。
bash-4.4$ func()
> {
> for char in a b c
> do
> echo $char
> done
> }
bash-4.4$
bash-4.4$ while IFS= read line
> do
> echo "char: $line"
> done <<< $(func)
char: a
char: b
char: c
使字符串正常工作(即,如文档所述)是一个持续的过程。