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。そうは言っても、私はもう一つの答えあなたがやりたいことを達成するためのより良い方法を提供します。

関連情報