Linux执行带有参数的php文件

Linux执行带有参数的php文件,linux,xargs,Linux,Xargs,php有三个参数。例如:/execute.php 11 111 我喜欢文本文件中带有空格的数据列表。例如: 22 222 222 33 333 333 44 444 444 我在考虑使用xargs来传递争论,但它不起作用。 这是我的尝试 cat raw.txt | xargs -I % ./execute.php %0 %1 %2 不管用,知道吗? 感谢您的帮助根据以下成绩单,您没有正确处理数据: pax> printf '2 22 222\n3 33 333\n4 44 444\n'

php有三个参数。例如:
/execute.php 11 111
我喜欢文本文件中带有空格的数据列表。例如:

22 222 222
33 333 333
44 444 444
我在考虑使用xargs来传递争论,但它不起作用。 这是我的尝试

cat raw.txt | xargs -I % ./execute.php %0 %1 %2
不管用,知道吗?
感谢您的帮助

根据以下成绩单,您没有正确处理数据:

pax> printf '2 22 222\n3 33 333\n4 44 444\n' | xargs -I % echo %0 %1 %2
2 22 2220 2 22 2221 2 22 2222
3 33 3330 3 33 3331 3 33 3332
4 44 4440 4 44 4441 4 44 4442
每一个
%
都给出了整行,而
%
后面的数字正好被钉在末尾

为了进行调查,让我们先创建一个伪处理文件
proc.sh
(和
chmod 700
以便轻松运行):

即使切换到
xargs-I%./proc.sh%
,您也会发现有一个带有嵌入空格的参数,而不是三个单独的参数:

pax> vi proc.sh ; printf '2 22 222\n3 33 333\n4 44 444\n' | xargs -I % ./proc.sh %
1 '2 22 222' '' ''
1 '3 33 333' '' ''
1 '4 44 444' '' ''

最简单的解决方案可能是切换到
进行读取
循环,例如:

pax:~> printf '2 22 222\n3 33 333\n4 44 444\n' | while read p1 p2 p3 ; do ./proc.sh ${p1} ${p2} ${p3} ; done
3 '2' '22' '222'
3 '3' '33' '333'
3 '4' '44' '444'
您可以看到,程序是用三个参数调用的,您只需将其调整到您自己的程序:

while read p1 p2 p3 ; do ./proc.sh ${p1} ${p2} ${p3} ; done < raw.txt
读取p1 p2 p3时
;do./proc.sh${p1}${p2}${p3};完成
while read p1 p2 p3 ; do ./proc.sh ${p1} ${p2} ${p3} ; done < raw.txt