gpt4 book ai didi

bash:包含 fork 进程的脚本在通过反引号执行时挂起

转载 作者:行者123 更新时间:2023-11-29 09:27:44 25 4
gpt4 key购买 nike

我的总体目的是能够运行脚本 t1.sh,它会启动一个程序,该程序将在脚本完成后持续存在(本例中为计算器)。然后 t1.sh 回显关联的 PID,然后可以在其他调用 t1.sh 的脚本 t2.sh 中使用。

此问题出现在一个较大的脚本中,但我认为我已将其隔离到以下内容。

t1.sh:

#!/bin/bash
gnome-calculator &
PID=$!
echo $PID

运行./t1.sh启动计算器,立即吐出pid,并给出新提示。
但是,运行 A=$(./t1.sh)(或使用反引号)时,脚本似乎“挂起”,直到计算器窗口关闭。与此脚本相同,t2.sh:

#!/bin/bash
B=$(./t1.sh)
echo $B

在计算器窗口关闭之前没有回显。

我的问题是:

  1. 为什么会这样,以及
  2. 如何预防?

提前感谢您提供的任何智慧之言。

最佳答案

这是因为捕获表达式正在等待标准输入关闭。如果重写脚本

#!/bin/bash
gnome-calculator >/dev/null &
PID=$!
echo $PID

你应该很好。

关于bash:包含 fork 进程的脚本在通过反引号执行时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186215/

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