相关疑难解决方法(0)

bash 如果不是没有子shell的多个条件?

我想在一个 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的情况下对条件进行分组?

bash shell-script

33
推荐指数
4
解决办法
4万
查看次数

标签 统计

bash ×1

shell-script ×1