对执行后台任务的脚本执行bash命令替换

时间:2014-05-16 15:11:10

标签: bash

我想返回一个脚本的结果,该脚本也会启动后台任务。命令替换运算符等待后台任务,使调用变慢。我创建了以下示例来说明问题:

function answer {
    sleep 5 &
    echo string
}

echo $(answer)

有没有办法在不等待它创建的任何后台作业的情况下调用命令?

谢谢,

标记

2 个答案:

答案 0 :(得分:3)

问题是sleep继承了stdout并保持打开状态。你可以简单地重定向stdout:

answer() {
  sleep 5 > /dev/null &
  echo "string"
}
echo "$(answer)"

答案 1 :(得分:0)

如果您打算在该功能正常运行的同时快速继续该程序,您可以调用该函数在后台运行。

function answer {
    sleep 5
    echo Second
}

echo $(answer) &
echo First

其输出将是

First
Second