Bash:将参数传递到特定命令

时间:2016-01-21 08:44:16

标签: bash shell parameters parameter-passing

我知道我可以将参数直接传递到环境中,如下所示:

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)

1 个答案:

答案 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

使字符串正常工作(即,如文档所述)是一个持续的过程。