我有一个在终端中运行的php脚本,它返回一个数字,这个数字是人性化的格式化所以:
php script.php
例如输出:1 020 536
但有时我们需要这个脚本将数字输出为计算机友好版本,所以在我的情况下:
1020536
是否可以直接从php脚本中检测它是直接调用还是以下列方式调用:
echo $(php script.php)
和
php script.php | cat
两个版本都应该输出非格式化的数字。
这可能吗?
提前致谢!
答案 0 :(得分:2)
您可以使用posix-isatty执行此操作。这是一个例子;
您可以实施的script.php
;
<?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
作为输入。换句话说,您将脚本输出重定向到不是终端的位置。