从命令行使用php:如何重定向输出?

时间:2014-09-17 15:24:58

标签: php bash shell

我是一个PHP新手......我通常用bash编写脚本,我可以轻松地做这样的事情:

#!/bin/bash

# myscript.sh

function testFunction() {
 echo "bubu" > /dev/tty
 echo "gaga"
}
a=$(testFunction)
echo $a > t

如果我在shell中运行它,我会得到这个:

$ ./myscript.sh
bubu
$ cat t
gaga

现在,如果我有一个PHP文件而不是函数,我怎么能得到相同的输出?

// my script.php
echo "bubu";
echo "gaga";

Bash脚本:

#!/bin/bash

# myscript.sh

a=$(php myscript.php)
echo $a > t

如果我在shell中运行它,我会得到这个:

$ ./myscript.sh
$ cat t
bubu
gaga

如何告诉php脚本将"bubu"发送到/dev/tty

我尝试和ob_start及其朋友一起玩,但没有得到任何结果。

2 个答案:

答案 0 :(得分:0)

您可以在PHP中使用stdout / stderr来分割输出,请参阅stackoverflow问题PHP CLI doesn't use stderr to output errors。但是,这需要将echo中的所有“bubu”myscript.php语句调整为:

fwrite(STDERR, "bubu");

然后,你会将 stderr 重定向到Bash包装器中的文件bubu以获取所有“bubu”行,而所有“gaga”行将出现在您的终端上:

php myscript.php 2> bubu

答案 1 :(得分:-1)

$ php script.php > /dev/tty

这就是诀窍:))

编辑/

我明白了,你只想要" bubu"

所以,您应该执行以下操作:

file_put_contents('/dev/tty', 'bubu');