我想在一个 shell if 语句中组合多个条件,并否定组合。对于条件的简单组合,我有以下工作代码:
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then
# do stuff with the files
fi
Run Code Online (Sandbox Code Playgroud)
这工作正常。如果我想否定它,我可以使用以下工作代码:
if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then
echo "Error: You done goofed."
exit 1
fi
# do stuff with the files
Run Code Online (Sandbox Code Playgroud)
这也按预期工作。但是,我突然想到我不知道括号实际上在做什么。我想将它们仅用于分组,但它实际上是否产生了一个子外壳?(我怎么知道?)如果是这样,有没有办法在不产生子shell的情况下对条件进行分组?