大括号的含义

大括号的含义

我不确定我是否理解与分组相关的大括号的含义。我能看到的唯一与使用常规 () 不同的是 {} 表示在当前 shell 中执行而不是在子 shell 中执行。但经过测试,似乎有某种方法可以在 {} 内格式化数据,这与常规 () 不同。例如,我测试了以下内容:

$ {who}
bash: {who}: command not found
[john@pc ~]$ 
[john@pc ~]$ {who;}
bash: syntax error near unexpected token `}'
[john@pc ~]$ {who ;}
bash: syntax error near unexpected token `}'
[john@pc ~]$ { who ;}
john    tty1         2022-11-30 14:51

显然,使用 {} 存在某种结构,但我无法在网上或书中找到任何资源来向我解释这一点。谁能帮我理解一下。

答案1

{ }语法被命名为分组表达。

它不同于子外壳 ( )产生一个新的外壳。

请注意,此语法需要在 and 周围留有空格{并以}a;结尾排队表达式,如:

{ grep user /etc/passwd | awk '1'; } 

多行表达式中不需要:

{
    grep user /etc/passwd |
        awk '1'
}

此语法是将多个命令组合到一个流的有用方法:

{ cmd1; cmd2; cmd3; } | grep ...

推荐链接:


为了不与大括号扩展喜欢{1..9}

相关内容