如何在 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。話雖這麼說,我認為另一個答案為您提供更好的方法來實現您想做的事情。

相關內容