美文网首页
shell为管道创建subshell 2022-07-20

shell为管道创建subshell 2022-07-20

作者: 9_SooHyun | 来源:发表于2022-07-20 16:38 被阅读0次

问题源
https://stackoverflow.com/questions/16854280/a-variable-modified-inside-a-while-loop-is-not-remembered

运行以下shell会发现,变量foo在经历了循环后并没有变更成预期的值。这是因为shell会为管道| 创建子进程,父子进程通过管道通信。子进程的foo确实被改了,但父进程的foo确实没被改

#!/bin/bash

set -e
set -u 
foo=0
bar="hello"  
if [[ "$bar" == "hello" ]]
then
    foo=1
    echo "Setting \$foo to 1: $foo"
fi

echo "Variable \$foo after if statement: $foo"   
lines="first line\nsecond line\nthird line" 
echo -e $lines | while read line
do
    if [[ "$line" == "second line" ]]
    then
    foo=2
    echo "Variable \$foo updated to $foo inside if inside while loop"
    fi
    echo "Value of \$foo in while loop body: $foo"
done

echo "Variable \$foo after while loop: $foo"

# Output:
# $ ./testbash.sh
# Setting $foo to 1: 1
# Variable $foo after if statement: 1
# Value of $foo in while loop body: 1
# Variable $foo updated to 2 inside if inside while loop
# Value of $foo in while loop body: 2
# Value of $foo in while loop body: 2
# Variable $foo after while loop: 1

# bash --version
# GNU bash, version 4.1.10(4)-release (i686-pc-cygwin)

相关文章

  • shell为管道创建subshell 2022-07-20

    问题源https://stackoverflow.com/questions/16854280/a-variabl...

  • Shell 记事本

    字符串相关 语法相关 if[[a=~b]] ,其中=~为匹配正则表达式 管道 管道会开启subShell需要注意,...

  • 如何理解subshell

    从程序的角度理解subshell: subshell产生的几种环境

  • 管道命令

    参考linux shell 管道命令(pipe)使用及与shell重定向区别、管道命令 管道命令操作符是:”|”,...

  • Shell(二)

    什么是Shell Shell脚本 管道和重定向 Shell管道是Shell中最值得称赞的功能之一,它以非常简洁的形...

  • shell [IO处理]中 '>' 与‘>>’ 的区别

    在shell中 '>' 为创建: echo “hello shell” > out.txt '>>' 为追加:ec...

  • Shell 管道

    Shell 可以将两个或多个程序连接到一起,以使一个程序的输出变为下一个程序的输入,以这种方式连接的两个或多个程序...

  • chapter 11. 构建基本脚本

    创建shell脚本 shell脚本第一行为指定具体shell来运行该脚本,可以指定shell(待验证) echo ...

  • 第4次课-Shell脚本语言-第4讲

    内容一:Shell脚本语言-管道? 内容二:Shell脚本语言-重定向?

  • shell 语法

    shell 语法如何抒写一个shell脚本shell脚本运行shell中的特殊符号管道重定向shell中数学运算脚...

网友评论

      本文标题:shell为管道创建subshell 2022-07-20

      本文链接:https://www.haomeiwen.com/subject/pdxyirtx.html