命令行grep用于包含'$'的字符串?

时间:2009-11-02 23:51:33

标签: command-line grep freebsd

我正在尝试找到两个变量在脚本目录中连接的位置,但是当我尝试以下操作时:

grep -lire "$DATA_PATH . $AWARDS_YEAR" *

我得到“未定义的变量”错误......

我以为我可以通过使用:

来逃避$ s
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *

但是我得到了同样的错误 - 所以,你如何用$ s进行字符串grep?

2 个答案:

答案 0 :(得分:6)

Tcsh与变量shell相比有点不同,而且它是FreeBSD的默认值。

因此,只需使用单引号'$VAR',或转义引号之外的$\$"VAR"

答案 1 :(得分:2)

将其放入单引号中,并使用转义斜杠:

grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *

另请注意,点(。)是正则表达式字符。如果你不想要它,也可以逃避它(或者不要使用-e选项)。

这是nice reference,其中包含更多常规信息。