Bash subshel​​l:parenthese :()VS dollar-parenthese:$()

Boh*_*ohr 18 bash

在bash,两者()$()创建一个子shell.

彼此之间有什么区别?他们的典型用法是什么?

Car*_*rum 20

()只需创建一个复合命令,在括号内运行命令. $()做同样的事情,但也替代输出.

来自文档:

  1. (list)
    list在子shell环境中执行...影响shell环境的变量赋值和内置命令在命令完成后不会保持有效.返回状态是退出状态list.

  2. 命令替换
    命令替换允许输出命令来替换命令名称.有两种形式:

    $(command)
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    `command`
    
    Run Code Online (Sandbox Code Playgroud)

    Bash通过command使用命令的标准输出执行和替换命令替换来执行扩展,删除任何尾随换行符.

  • 一个"啊哈"时刻!"命令替换"是我们如何能够将命令的输出分配给变量,例如使用`RESULT = $(command)`,`$(command)`的输出替换命令,然后分配给`RESULT `. (7认同)