我该怎么做:
if !("abc" in file1 and "def" in file2)
then
echo "Failed"
fi
我已经知道如何检查 file1: 中的“abc” grep -Fxq "abc" file1
,但我无法让该if not (command1 and command2)
部分正常工作。
你几乎是对的。只需在感叹号和 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
语法是不是很有趣!?!
你可以这样做:
$ grep -Fxq "abc" file1 && grep -Fxq "def" file2 || echo "Failed"
这使用bash
逻辑运算符 AND&&
和 OR ||
。
这可以分成多行,例如:
$ grep -Fxq "abc" file1 &&
> grep -Fxq "def" file2 ||
> echo "Failed"
if (grep -Fxq "abc" file1 && grep -Fxq "def" file2);
then
echo ""
else
echo "failed"
fi