You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell分组命令中{后需加空格的原因及语法疑问

Shell语法疑问:为何{后必须加空格,而};前无需空格?

错误示例与报错

错误写法的代码:

{sleep 1; echo 123;}&

执行后Shell提示错误:
Syntax error: "}" unexpected

正确写法

需要在{后添加空格:

{ sleep 1; echo 123;}&

原因解析

这要从Shell的词法解析逻辑说起:

  • { 是Shell的复合命令关键字,不是普通命令。Shell解析代码时会把连续字符当作一个整体词元。如果{直接跟sleep,Shell会把{sleep当成一个完整的、不存在的命令名,根本没识别出{这个关键字,自然找不到对应的结束标记},于是报错。
  • 而123;}里的},前面的分号;已经是Shell的命令分隔符,它把123;和}拆成了两个独立的词元,Shell能明确认出}是复合命令的结束标记,所以不需要额外加空格。

总结一下:{作为关键字,必须用空格(或空白符、分号)和后面内容隔开,让Shell单独识别它;}前面有分号做分隔,Shell能准确识别,所以不用空格。

内容的提问来源于stack exchange,提问作者yuanjianpeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:04:51