小编Mar*_*obe的帖子

通过Bash逻辑在当前shell中运行管道

在我的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一样在前台运行它?

bash shell ksh

0
推荐指数
1
解决办法
28
查看次数

标签 统计

bash ×1

ksh ×1

shell ×1