我该怎么做:
if !("abc" in file1 and "def" in file2)
then
echo "Failed"
fi
我已经知道如何检查file1中的“abc”:grep -Fxq "abc" file1
,但我无法让if not (command1 and command2)
部分工作。
答案 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