1

どうすれば次のようになりますか。

if !("abc" in file1 and "def" in file2)
then
  echo "Failed"
fi

file1の「abc」をチェックする方法はすでに知っていますgrep -Fxq "abc" file1が、パーツを機能させることができませんif not (command1 and command2)

4

3 に答える 3

4

あなたはそれをほぼ正しく理解しました。感嘆符とgrepコマンドの間にスペースを追加するだけで、次のように機能します。

if ! (grep -Fxq "abc" file1 && grep -Fxq "def" file2); then
     echo "Failed"
fi

と仮定するとbash、余分なものは必要ありませんelse

括弧を使用すると、子シェルプロセスとして、サブシェル環境でgrepsが実行されることに注意してください。中括弧を使用すると、これを簡単に回避できます(これはグループコマンドと呼ばれます)。

if ! { grep -Fxq "abc" file1 && grep -Fxq "def" file2; }; then
     echo "Failed"
fi

より多くのスペースと追加のセミコロンが必要であることに注意してください–bash構文はそれほど面白いものではありません!?!

于 2013-03-14T11:51:07.023 に答える
2

あなたができること:

$ grep -Fxq "abc" file1 && grep -Fxq "def" file2 || echo "Failed"

これは、bash論理演算子AND&&およびORを使用し||ます。

これは、次のように複数の行に分割できます。

$ grep -Fxq "abc" file1 && 
> grep -Fxq "def" file2 ||
> echo "Failed" 
于 2013-03-14T11:47:54.537 に答える
2
if (grep -Fxq "abc" file1 && grep -Fxq "def" file2);
then
  echo ""
else
  echo "failed"
fi
于 2013-03-14T11:49:07.700 に答える