哪个括号会导致创建子 shell?

哪个括号会导致创建子 shell?

因此,如果我if像下面一样使用 comamand ,它将创建一个子 shell:

if ! (ffmpeg -h > /dev/null 2>&1)
then
    echo "FFmpeg NOT INSTALLED"
.
.
.
fi

var=$(<command>)about和它的等价物是什么var=`<command>`?他们也会创建一个子shell吗?

答案1

两种形式的命令替换都会创建子 shell。

3.5.4 命令替换

Bash 通过在子 shell 环境中执行命令来执行扩展

答案2

如果您避免使用旧的且难以引用的反勾命令替换。

那么规则就是简单的绕行()创建一个子shell。然而括号{}没有。

  • ()子外壳
  • $()子外壳和替换
  • {}无子壳包围
  • ${}变量替换

相关内容