为什么输出重定向在这种情况下不起作用?

时间:2013-12-10 11:06:36

标签: linux bash shell

操作系统为ubuntu12.04。我编写了一个python程序main.py,并希望轻松运行它。所以我创建了以下名为run.sh的shell脚本。

#!/bin/bash

python main.py & >/dev/null  2>&1

执行此命令chmod u+x run.sh

然而,当我./run.sh时,python程序的输出仍然存在于终端中。
但这可以奏效:./run.sh >/dev/null 2>&1。但这种方式违背了我的初衷,因为它使用起来太复杂了。

我想知道为什么会发生这种情况。我怎样才能实现我的意图?

2 个答案:

答案 0 :(得分:4)

如果你想在后台运行脚本,试试这个:

python main.py >/dev/null  2>&1 &

答案 1 :(得分:1)

&>/dev/null之间有一个空格,因此Python进程在后台运行,而不会对其应用输出重定向。如果删除&,则不会输出。由于&>是有效的bash,它也足以删除空格,但你可能并不是那个意思。