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。そういえば私の考えにはもう一つの答え必要なものを達成するためのより良い方法を提供します。

関連情報