我有一个shell脚本,我想在后台调用另一个shell脚本。这两个脚本都是bash脚本 第一个脚本(a.sh)类似于:
read a
echo 'something'
read b
echo 'something else'
# some if else conditions
nohup bash b.sh 2>&1 > /tmp/log &
当我尝试执行上述脚本时:./a.sh arg1 arg2 | tee log
,非常奇怪的是,它在第二个脚本b.sh
的nohup行停留,但它不应该完成。
但是当我 在脚本中有以下行时,它按预期工作:
nohup bash b.sh 2>&1 > /tmp/log &
请帮忙。如果需要,我也可以分享确切的脚本。
答案 0 :(得分:2)
这就是你想要发生的事情:
tee
退出这就是发生的事情:
tee
永不退出。通过将stderr指向日志文件而不是管道来修复它,以便后台进程不再使管道保持打开状态。
2>&1
的顺序和重定向的含义为explained in other answers,而shellcheck会在您的代码中自动指出此问题。