【发布时间】:2014-02-10 08:43:43
【问题描述】:
当grouping commands in bash 时,我知道括号() 和花括号{} 之间在用途上的区别。
但是为什么大括号结构在最后一个命令之后需要分号,而对于括号结构,分号是可选的?
$ 而假;做(回声“你好”;回声“再见”;);完毕 $ 而假;做(回声“你好”;回声“再见”);完毕 $ 而假;做{回声“你好”;回声“再见”; };完毕 $ 而假;做{回声“你好”;回声“再见”};完毕 bash:意外标记“完成”附近的语法错误 $我正在寻找一些关于为什么会这样的见解。我不是在寻找诸如“因为文档是这样说的”或“因为它是这样设计的”之类的答案。我想知道为什么它是这样设计的。或者如果它只是一个历史文物?
至少可以在以下版本的bash 中观察到这一点:
- GNU bash,版本 3.00.15(1)-release (x86_64-redhat-linux-gnu)
- GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin12)
- GNU bash,版本 4.2.25(1)-release (x86_64-pc-linux-gnu)
【问题讨论】:
-
为了参考起见,注意测试时使用的 bash 版本可能会有所帮助。
-
@JonathonReinhart - 版本已在问题中注明 - 谢谢。
-
“因为那是how it's documented”怎么样。大括号和小括号之间的细微区别描述得很清楚。
-
虽然这有一个很好的答案并且此时不值得结束,但请参阅What is the rationale for closing "why" questions on language design? -- 请注意,SO 的范围仅限于实用、可回答的问题。如果一个问题本质上是历史问题,它不会改变您参与开发实践的方式。
标签: bash bash syntax grouping parentheses braces