grep正则表达式中的shell变量

时间:2013-08-09 13:33:32

标签: bash grep

我正在尝试在grep正则表达式中使用变量。我将发布一个失败的例子,也许有人可以建议如何在运行grep命令时对变量进行评估。我也试过${var}

$ string="test this"
$ var="test"
$ echo $string | grep '^$var'
$ 

由于我的正则表达式应匹配以“test”开头的行,因此它应该打印通过它回显的行。

$ echo $string
test this
$

1 个答案:

答案 0 :(得分:39)

您需要使用双引号。单引号可防止shell对shell变量进行插值。您使用单引号来防止shell进行插值,如果正则表达式使用$作为模式的一部分,则可能必须执行插值操作。如果您使用双引号,也可以使用反斜杠引用 $

此外,您可能需要将变量放在花括号${var}中,以帮助将其与模式的其余部分分开。

示例:

$ string="test this"
$ var="test"
$ echo $string | grep "^$var"