如何在 bash 命令中嵌套引号

如何在 bash 命令中嵌套引号

我想测试一下这个命令的结果:

dmesg | grep "Firmware patch 1563"

因此,我尝试写这样的东西:

if [ "`dmesg | grep "Firmware patch 1563`" == "" ]

但这不起作用。我应该如何重写这个命令?

答案1

您可以直接测试命令的结果:

if dmesg | grep -q "Firmware patch 1563"

如果需要检查管道的输出是否为空,用于$()命令替换并筑巢你的引号就像使用独立命令一样:

if [ -z "$(my_command | other_command "some argument")" ]

答案2

您可以使用命令替换直接地:

if $(dmesg | grep -q "Firmware patch 1563"); then
  # Do something here
fi

或者更好的方法,直接使用命令,例如l0b0 的回答

答案3

你写的应该有效。这并不是因为您忘记了报价。它应该是:

if [ "`dmesg | grep "Firmware patch 1563"`" == "" ]

"注意后面的额外内容1563。话虽这么说,我认为另一个答案为您提供更好的方法来实现您想做的事情。

相关内容