首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带参数的Linux执行php文件

带参数的Linux执行php文件
EN

Stack Overflow用户
提问于 2020-08-26 02:50:44
回答 1查看 106关注 0票数 0

我让.php接受三个参数。例如:./execute.php 11 111 111,我在文本文件中有类似的带有间距的数据列表。例如:

代码语言:javascript
复制
22 222 222
33 333 333
44 444 444

我在考虑用xargs来传递争论,但它不起作用。这是我的尝试

代码语言:javascript
复制
cat raw.txt | xargs -I % ./execute.php %0 %1 %2

不管用,知道吗?谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 03:01:08

根据以下记录,您没有正确地处理数据:

代码语言:javascript
复制
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它,以便我们可以轻松地运行它):

代码语言:javascript
复制
#!/usr/bin/env bash
echo "$# '$1' '$2' '$3'"

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

代码语言:javascript
复制
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循环,如下所示:

代码语言:javascript
复制
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'

您可以看到,程序是用三个参数调用的,您只需调整它以适应您自己的程序:

代码语言:javascript
复制
while read p1 p2 p3 ; do ./proc.sh ${p1} ${p2} ${p3} ; done < raw.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63589766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档