bash“&”没有打印“[1] +完成”

时间:2012-05-03 21:29:46

标签: linux bash scripting

我在.bashrc中调用一个脚本来打印我打开终端时的新消息数量,我希望呼叫在访问网络时是非阻塞的,有时需要几秒钟,这意味着我不能使用终端直到完成。

但是如果我把:

    mailcheck & 

在我的bashrc中,它运行正常。但是然后打印一个空行,当我按下Enter键时它会打印

    [1]+  Done                    ~/bin/mailcheck

这有点麻烦吗?

4 个答案:

答案 0 :(得分:9)

该消息不是来自mailcheck,而是来自bash的工作控制,告诉你有关你的后台工作。避免它的方法是告诉bash你不希望它由作业控制管理:

mailcheck &
disown $!

答案 1 :(得分:4)

这似乎有效:

(mailcheck &)

答案 2 :(得分:3)

您可以这样调用您的脚本:

(exec mailcheck & )

答案 3 :(得分:2)

尝试将stderr传递给/ dev / null

mailcheck & 2>/dev/null

考虑几分钟,另一种方法可能是使用写作 将后台任务的输出传递给您自己,这样它就可以随时完成,您可以从stdout和stderr中添加任何其他输出。

mailcheck | write $(whoami) & > /dev/null