在 bash 中,我想说“如果一个文件不包含 XYZ,那么”做一堆事情。将其转换为代码的最自然方法是:
if [ ! grep --quiet XYZ "$MyFile" ] ; then
... do things ...
fi
但当然,这不是有效的 Bash 语法。我可以使用反引号,但随后我将测试文件的输出。我能想到的两种选择是:
grep --quiet XYZ "$MyFile"
if [ $? -ne 0 ]; then
... do things ...
fi
和
grep --quiet XYZ "$MyFile" ||
( ... do things ...
)
我更喜欢第二个,它更 Lispy 和 || 控制流在脚本语言中并不少见。我也可以看到第一个参数,虽然当这个人阅读第一行时,他们不知道你为什么要执行 grep,看起来你正在执行它是为了它的主要效果,而不仅仅是为了控制脚本中的分支。
是否有第三种更直接的方式使用if
语句并具有grep
in 条件?