Linux 使用参数执行 php 文件
Linux execute php file with arguments
我有。php需要三个参数。例如:./execute.php 11 111 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
它以便我们可以 运行 它很容易):
#!/usr/bin/env bash
echo "$# '' '' ''"
即使您切换到 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' '' ''
最简单的解决方案可能是切换到 for read
循环,例如:
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
我有。php需要三个参数。例如:./execute.php 11 111 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
它以便我们可以 运行 它很容易):
#!/usr/bin/env bash
echo "$# '' '' ''"
即使您切换到 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' '' ''
最简单的解决方案可能是切换到 for read
循环,例如:
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