bash脚本检查文件中的字符串

时间:2013-03-14 11:40:03

标签: linux bash scripting

我该怎么做:

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

我已经知道如何检查file1中的“abc”:grep -Fxq "abc" file1,但我无法让if not (command1 and command2)部分工作。

3 个答案:

答案 0 :(得分:4)

你几乎是对的。只需在感叹号和grep命令之间添加一个空格,它就可以工作:

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

假设bash,则无需额外else

请注意,使用括号在子shell环境中运行greps,作为子shell进程。你可以通过使用花括号来轻松避免这种情况(这个东西叫做组命令):

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

请注意,您需要更多空格和一个额外的分号 - bash语法不是很有趣!?!

答案 1 :(得分:2)

你可以这样做:

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

这使用bash逻辑运算符AND &&和OR ||

这可以分为多行,如:

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

答案 2 :(得分:2)

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