我可以同时接收来自管道和heredoc的输入,并在php命令行中同时使用它们吗?
我想这样做:
bash$ ls -l | php <<'code'
<?php
echo $piped;
?>
code
返回ls -l
另外,我可以使用php -R
与heredoc输入php脚本吗?
管道
ls -l | php -r 'print_r(file("php://stdin"));'
Heredoc
$ php <<CODE
<?php
echo "Hello World'n";
?>
CODE
Hello World
结合
$ ls -l | php <<'CODE'
<?php
$f = file("php://stdin");
foreach($f as $k=>$v){
echo "[$k]=>$v";
}
?>
Program Finished
CODE
[0]=><?php
[1]=>$f = file("php://stdin");
[2]=>foreach($f as $k=>$v){
[3]=>echo "[$k]=>$v";
[4]=>}
[5]=>?>
[6]=>Program Finished
Program Finished
注意:当您使用Here Documents for php
命令时,新添加的php
代码将覆盖以前的stdin
关于-R
部分的问题:
-R
/--process-code
每个输入行执行的PHP代码。新增于PHP 5.
该模式有两个特殊变量:
$argn
和$argi
。$argn
将包含PHP正在处理的行,而$argi
将包含行号。<一口>文档一口>
如果我对你的问题理解正确,你正在寻找$argn
变量。你的bash应该支持这个文件。
编辑:错误,只需调用多行值:
$ ls -l | php -R '
printf("#%02d: %s'n", $argi, $argn);
'
(我认为使用单引号开关更容易)