【问题标题】:What is the difference between ( ... ) and { ... } in bash [duplicate]bash中(...)和{...}之间有什么区别[重复]
【发布时间】:2021-12-17 14:00:51
【问题描述】:

在 bash 中,选择使用 ( ... ){ ... } 之间是否有任何区别,就像在我的测试用例中一样,这两种产品的预期结果相同:

# using round brackets
(
    echo 'hello'
    echo 'world'
) | rev
# using squiggly brackets
{
    echo 'hello'
    echo 'world'
} | rev
# result:
olleh
dlrow

也许这个测试用例在它们相同的情况下,但是我会选择一种语法而不是另一种的因素?

【问题讨论】:

标签: bash


【解决方案1】:

选择使用 ( ... ) 或 { ... } 之间有什么区别

是的,一个生成一个子shell,另一个执行current execution environment中的命令。

但是,我会选择一种语法而不是另一种语法的因素是什么?

当然 - 当您想要生成子 shell 时使用 ()

在bash中,这两个代码块有什么区别吗:

(我认为,但我不是 100% 确定)不。管道的左侧在子外壳中生成。然后 Bash 检测到 (...) 是左侧的唯一表达式,因此 Bash 优化并且不产生子shell,只是执行第二个命令列表的内容并且不产生第二个子shell,所以两者都应该导致产生完全相同的“子shell计数”。这是一种“优化”,就像( ( ( ( ( ( echo ) ) ) ) ) ) 可以只是一个子shell。

【讨论】:

    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2018-08-26
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多