Answers:
括号表示bash中的子外壳。引用man bash
页面:
(list) list is executed in a subshell environment (see COMMAND
EXECUTION ENVIRONMENT below). Variable assignments and builtin
commands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
其中a list
只是正常的命令序列。
实际上,这是相当可移植的,bash
尽管不是特定的。该POSIX shell命令行语言规范具有对下面的描述(compound-list)
语法:
在子shell环境中执行compound-list;请参阅Shell执行环境。列表完成后,影响环境的变量分配和内置命令将不再有效。
$()
和之间有什么区别()
?
$()
是命令替换,()
是子shell。它们都运行命令,不同之处在于输出发生了什么。名称比符号更容易搜索。另请参见unix.stackexchange.com/q/213530/9537
括号之间嵌入的命令列表作为子外壳运行。
子外壳程序中的变量在子外壳程序中的代码块之外不可见。父进程,启动子Shell的Shell无法访问它们。这些实际上是局部变量。