Answers:
行尾的单分号是多余的,因为换行符也是命令分隔符。case
在每个模式块中,在最后一个命令的末尾特别需要双分号;help case
有关详细信息,请参见。
根据man bash
:
metacharacter A character that, when unquoted, separates words. One of the following: | & ; ( ) < > space tab control operator A token that performs a control function. It is one of the following symbols: || & && ; ;; ( ) | |& <newline>
因此,;
可以是元字符或控制运算符,而;;
始终是控制运算符(在命令的情况下)。
在您的特定代码中,;
不需要所有行尾。该;;
然是必要的。
;
和之间的实际区别是;;
什么?我对BASH语法解析还不够熟悉,无法了解BASH所谓的“元字符”和所谓的“控制运算符”之间的实际区别。
@伊格纳西奥·巴斯克斯(Agnams)
实际上,这不是完全准确的,行尾的单个分号不是多余的,而且绝对与新行不是同一回事。
以';'分隔的命令 按顺序执行;Shell等待每个命令依次终止。返回状态是最后执行的命令的退出状态。
由“新行”分开的命令可能会在平行当分离命令由分号执行总是按顺序执行
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
因此,您引用的分号同样适用于换行符。
&
不是\n
。在评论中指出,他可以跳过分号,因为显然地,&
它也是;
和和一样的命令分隔符\n
。