首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >知道php脚本是否提交到输出重定向

问知道php脚本是否提交到输出重定向
EN

Stack Overflow用户
提问于 2014-04-29 13:08:48
回答 1查看 73关注 0票数 1

我有一个php脚本,它运行在终端中,它返回一个数字,这个数字是人性化的,格式如下:

代码语言:javascript
复制
php script.php

例如输出:1 020 536

但有时我们需要这个脚本将数字输出为一个对计算机友好的版本,所以在我的例子中:

1020536

如果直接调用php脚本或以下列方式调用它,是否可以直接从它检测:

代码语言:javascript
复制
echo $(php script.php)

和

代码语言:javascript
复制
php script.php | cat

这两个版本都应该输出未格式化的数字。

这有可能吗?

提前谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 13:32:36

你可以用posix-isatty做这件事。以下是一个例子;

在您的script.php中,您可以实现;

代码语言:javascript
复制
<?php

if ( !posix_isatty(STDOUT) ) {
    fwrite(STDOUT, "You piped this script to another command");
    exit(2);
}
fwrite(STDOUT, "Called directly");

exit(0);

?>

更新:只适用于输入者:

posix_isatty帮助您检测脚本输出是否通过管道传输到其他地方。在上述情况下,posix_isatty(STDOUT)意味着您的php脚本输出到终端。如果您使用像php script | cat这样的php脚本,那么posix_isatty(STDOUT)将是false。因为,您已经将脚本的输出重定向到cat作为输入。换句话说,您将脚本输出重定向到不是终端的位置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23365602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档