我正try 从我的PHP应用程序运行grep搜索,但其中一个选项遇到了问题.Grep命令如下所示:

grep -rn --exclude-dir={img,node_modules,vendor} -E "14847"

此命令返回预期结果.但是,如果我以交互方式打开PHP并运行以下代码行:

print `grep -rn --exclude-dir={img,node_modules,vendor} -E "14847"`;

我在node_modules目录中找到了结果.有趣的是,如果我go 掉花括号和逗号,并且只排除node_modules,那么它就可以工作,并排除那些结果.我还可以 for each 要排除的目录单独列出--exclude-dir选项(但让我们暂时忽略这一点).因此,它似乎与花括号或逗号的处理有关.我试过用反斜杠来转义这两个词,但不幸的是没有成功.我是不是在PHP对执行操作符的解析中遗漏了什么?

推荐答案

{one,two,three}表示法是一种盲目的表示法,它不会被PHP或grep扩展.当您在PHP中运行带有反号的命令时,它将通过sh而不是bash运行该程序.因此,您失go 了使用这种类型的扩展的可能性.作为一种解决办法,您可以多次指定--exclude-dir:

print `grep -rn --exclude-dir=img --exlude-dir=node_module --exclude-dir=vendor -E "14847"`;

Php相关问答推荐

ngnix php8.0-fPM主要脚本未知

有条件的运费率基于购物车小计与WooPayments货币转换

尽管包含目标日期,但日期范围比较仍有意外输出

如何将对我的域的请求重定向到子文件夹中的索引,同时保留域URL并使用.htaccess?

PHP中冒号的奇怪用例

Laravel eloquent-如果没有包含InitialValue的结果,则查询where Second Value

将部分产品排除在WooCommerce的计算附加费之外

使用php创建表格和插入数据

PHP:为什么递归需要这么长时间

向WooCommerce管理订单总额添加自定义总额行

如何在codeigniter中将order_by RAND与下面的代码一起使用

以编程方式同步 WPML 翻译更改 Woocommerce 产品销售价格

laravel Eloquent 模型的问题

.htaccess 重写规则问题

根据所选付款方式更改 WooCommerce 提交结帐按钮文本

WooCommerce 订单和邮箱通知的自定义产品描述

将 HTML 表单链接到 SQLite 数据库

laravel 中的 OrderBy json 列

password_verify 在 PHP 7.4 中有效,但在 PHP 8.2 中无效

Php 的新WeakMap - 枚举曾经被垃圾收集过吗?