【发布时间】:2012-07-04 07:02:07
【问题描述】:
我正在编写一个 shell 来处理网络日志。一个操作用 php 编写并在 bash shell 中调用,它接受来自前一个管道的标准输入并将输出生成到下一个管道。我想知道如何为下一个管道生成输出。我已经测试过了
$stdin = fwrite(STDOUT, $data);
好像那样不行。对我有什么解决方案吗?非常感谢!
【问题讨论】:
我正在编写一个 shell 来处理网络日志。一个操作用 php 编写并在 bash shell 中调用,它接受来自前一个管道的标准输入并将输出生成到下一个管道。我想知道如何为下一个管道生成输出。我已经测试过了
$stdin = fwrite(STDOUT, $data);
好像那样不行。对我有什么解决方案吗?非常感谢!
【问题讨论】:
我通常只使用echo,或者如果我需要一个文件,我打开"php://stdout" 进行写作。
【讨论】:
如果您有一个接受 bash 命令参数的 PHP(这可以通过管道中的标准输入),您可以使用脚本中的变量 $argv 访问参数,该脚本将参数存储为由空格分隔的数组(http://php.net/manual/en/reserved.variables.argv.php)。
如果您希望 PHP 能够输出标准输出并将其输出通过管道传输到另一个脚本,您可以简单地打印或回显该语句,如果我没记错的话,它应该隐含在标准输出流中。
【讨论】:
您可以使用echo 或print 写入标准输出。在任何情况下,STDOUT 都不是我熟悉的常数。 PHP有some special wrappers,你可以用fopen来做你需要的事情。
【讨论】:
STDOUT 在您链接到的页面上有描述。