我有一个php脚本,它运行在终端中,它返回一个数字,这个数字是人性化的,格式如下:
php script.php例如输出:1 020 536
但有时我们需要这个脚本将数字输出为一个对计算机友好的版本,所以在我的例子中:
1020536
如果直接调用php脚本或以下列方式调用它,是否可以直接从它检测:
echo $(php script.php)和
php script.php | cat这两个版本都应该输出未格式化的数字。
这有可能吗?
提前谢谢!
发布于 2014-04-29 13:32:36
你可以用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作为输入。换句话说,您将脚本输出重定向到不是终端的位置。
https://stackoverflow.com/questions/23365602
复制相似问题