在我的Korn 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
Run Code Online (Sandbox Code Playgroud)
输出:
a=1
b=2
a=1
b=2
Run Code Online (Sandbox Code Playgroud)
意味着while循环在前台shell中运行.
但是当你在bash中运行它时,你得到:
a=1
b=2
a=
b=
Run Code Online (Sandbox Code Playgroud)
这意味着它在子shell中运行.
我知道其他机制可以获得我想要的特定用法,但是,有没有办法让bash像ksh一样在前台运行它?