【发布时间】:2014-05-07 23:32:48
【问题描述】:
我有一个 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
,非常奇怪的是,它卡在 nohup 行以使第二个脚本 b.sh 完成,而它不应该完成。
但是当我只是在脚本中有以下行时,它会按预期工作:nohup bash b.sh 2>&1 > /tmp/log &
请帮忙。如果需要,我还可以分享确切的脚本。
【问题讨论】:
-
没有卡住,直接回车。
-
没有。它卡住了。卡住是指它等待第二个脚本完成。显然按回车会在标准输出中插入一个新行,但它不在第一个脚本之外。
-
试试这个 nohup 命令:
nohup bash b.sh > /tmp/log 2>&1 & -
成功了!非常感谢。但我仍然无法理解为什么会这样。当同一行出现在单独的脚本中时(没有其他行)为什么它在那里工作而不是在这里工作。有什么建议吗?
-
不确定您使用的是哪个脚本,但我已经为您提供了正确的语法
标签: linux bash shell ubuntu background