gpt4 book ai didi

bash - 读取管道中的变量时会发生什么?

转载 作者:行者123 更新时间:2023-11-29 09:02:12 26 4
gpt4 key购买 nike

echo hello | read str
echo $str

read在管道之后执行,这意味着 echo 的输出读入 str - 但因为它在管道之后,str 的内容现在位于父 shell 无法读取的子 shell 中。

str 的内容发生了什么? ?管道是否创建一个子外壳,然后一旦内容被读入 str ,父进程是否杀死子进程和str被删除 - 或者 str 的内容住在壳外的某个地方?比如我们如何查看子 shell 中的内容?我们可以从父 shell 访问子 shell 吗?

最佳答案

${str} 的值仅在子 shell 的生命周期内存在。管道的左侧或右侧是父 shell 还是子 shell 取决于特定的 shell 和 shell 版本。

Bash 4.x 有一个选项 shopt -s lastpipe 可以在父 shell 中运行管道的最后一个命令,就像 ksh93 默认情况下那样。 $str 的值将保留。

关于bash - 读取管道中的变量时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com