>和>>运营商没有效果

时间:2011-04-30 12:33:01

标签: linux cat

当尝试将php脚本的输出写入文件时,我得到了最奇怪的错误。 我用:

#php daily.php > error/daily

嗯,所有这一切都是在控制台输出它。该文件(错误/每日)未受影响。

错误/每日有chmod 777。 不同的结构如

#php daily.php >> error/daily

也不起作用。 daily.php的输出只是在控制台中输出...

对此有什么想法? :/提前致谢!

更新:

现在使用

#php daily.php 2> error/daily

它在控制台中什么都不输出。

但错误/每日都没有触及,没有任何内容写入。

另一个更新:

#php daily.php 2>> error/daily

按预期工作(将错误输出附加到文件),而

#php daily.php 2> error/daily

简单地清空文件并不写入任何内容。 知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

所以这是在shell提示符下?这些括号使得封闭的命令在shell的新调用中执行;重定向将应用于shell本身的输出,其中没有。 shell执行的命令仍会将其输出打印到控制台。只要放下括号;它们是不必要的,也是问题的根源。

答案 1 :(得分:1)

在终端中,程序有两个输出:标准输出和错误输出。默认情况下,都会在控制台中显示。

> (和>>)运算符将标准输出重定向到文件,但在控制台中保留错误输出。

由于您似乎正在尝试将错误重定向到文件,因此php必须写入错误输出。要完成你想做的事,你必须做

php daily.php 2> error/daily

如果您想重定向两个输出,您也可以这样做 <击>

<击>
php daily.php 2> error/daily 1>&2

<击> 修改:不要这样做。 如果要重定向两个输出,请重定向到不同的文件。例如:

php daily.php 2> error/daily 1> output.txt