[英]php stdin from bash pipe and heredoc
我可以從管道和heredoc接收輸入,並在命令行中從php中使用它們。
我想做這樣的事情:
bash$ ls -l | php <<'code'
<?php
echo $piped;
?>
code
哪個應該返回ls -l
的結果
另外,我可以使用php -R
和php腳本的heredoc輸入嗎?
管道
ls -l | php -r 'print_r(file("php://stdin"));'
定界符
$ 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
。$argn
將包含PHP當時處理的行,而$argi
將包含行號。 文件
如果我理解你的問題,你正在尋找$argn
變量。 Heredoc應該是你的bash的支持。
編輯:錯誤,只需使用多行調用值:
$ ls -l | php -R '
printf("#%02d: %s\n", $argi, $argn);
'
(我認為使用交換機的單引號更容易)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.