在我Korn shell的日子里,我能做到以下几点:制作管道通猛砸逻辑运行在当前shell
#!/bin/ksh
(
echo a=1
echo b=2
) |
while read line
do
name=${line%%=*}
val=${line#*=}
eval "$name=$val"
eval "echo $name=\$$name"
done
echo a=$a
echo b=$b
输出:
a=1
b=2
a=1
b=2
含义while循环在前台外壳运行。
但是,当你运行在bash,你会得到:
a=1
b=2
a=
b=
意思是说在一个子shell中运行。
我知道其他机制,以获得我想要的具体用法,但是,有没有办法使bash在前台运行它像ksh?
查看[BashFAQ#24](http://mywiki.wooledge.org/BashFAQ/024),其中详细介绍了这一点。 –
...这个特定问题的答案也包含在稍微更一般的问题的答案中http://stackoverflow.com/questions/7313491/bash-while-read-resetting-variable-values-using-读取内置在管道中(旁白:mklement0的答案是恕我直言,那里是最好的)。 –