具有双引号和单引号引起来的变量替换的 Grep 模式

具有双引号和单引号引起来的变量替换的 Grep 模式

所以,假设我有以下模式:

Thisisatest="1"

在一个名为 的文件中file

我想匹配精确的上面的字符串无论出于何种原因,我选择循环列表中的一些数字,将它们用作变量并尝试执行以下操作:

Thisisatest="$varhere"

其中,上面的数$varhere等于上面的数,即1。 (虽然我提到了循环数字,只是未来可能的用例,并且仍然是一个示例)

现在为了让事情变得更容易,假设我想匹配上面的内容精确的图案尽管使用上面的变量及其内容:

grep 'Thisisatest="$varhere"' file

其中文件包含字符串Thisisatest="1"$varhere包含数字1

问题是,这行不通因为当单引号之间时不会发生变量扩展(如上所示)。

这是反驳这一失败的尝试:

  1. 变量替换的内容替换
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"

这里我使用echo来看是否输出正确的字符串,因此它可以用作 grep 的输入...它输出以下内容:

'Thisisatest="'1'"
  1. 添加更多报价
echo "'Thisisatest="${varhere}"'"

输出:

'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''

输出:

Thisisatest="'1'"

其余的很明显......现在上面的最后一次尝试似乎接近我想要的,但仍然不是。

有什么方法可以做到上述吗?

答案1

grep "Thisisatest=\"${varhere}\""

对我有用。“ \”通过一个 shell 解释翻转以下字符的“我是特殊字符”标志。

相关内容