【发布时间】:2012-02-23 15:48:53
【问题描述】:
我需要搜索一个 PHP 变量 $someVar。但是,Grep 认为我正在尝试运行正则表达式并抱怨:
$ grep -ir "Something Here" * | grep $someVar
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
$ grep -ir "Something Here" * | grep "$someVar"
<<Here it returns all rows with "someVar", not only those with "$someVar">>
我没有看到告诉 grep 不 将字符串解释为正则表达式的选项,而是将 $ 包含为另一个字符串字符。
【问题讨论】:
-
在这个问题中,主要问题不是
grep将$解释为正则表达式。这是关于用环境变量someVar的值替换$someVar的shell,可能是空字符串。第二个示例不应返回带有someVar的所有行,而是返回所有行,因为空字符串在所有行中。要告诉外壳不要替换,您必须使用'$someVar'或\$someVar。然后你必须处理grep对$字符的解释。 -
@ChristopheDrevet-Droguet:感谢您的解释,我对否决票感到困惑!您的评论提供的信息足以作为答案,事实上,如果是这样,它将是页面上更好的答案之一。