35 为什么将分号放在一个而不是另一个中? 结果是一样的 代码一 if [ "a" == "a" ] then echo "true" fi 代码二 if [ "a" == "a" ]; then echo "true"; fi 第二个代码中的分号是不必要的吗? 什么时候需要放置分号? bash scripting — 乔纳森 source 2 这已经得到了充分和适当的回答,但是我想让OP也知道这一点;只是替换任何行尾,因此您可以将两个命令合并为一行,例如:svn up; make — Aaron D. Marasco 2012年 1 另请注意;;,case语句中使用两个分号来分隔匹配项。 ;;在这里是必需的,不是可选的。...但是;;与;or 并不相同; ;,它看起来有点像。单个分号;在case语句的COMMANDS部分中正常工作。 — cas 2012年
31 仅当缺少行尾时才需要使用分号: if [ "a" == "a" ] ; then echo "true" ; fi 没有分号,您会收到语法错误。 我不明白您关于报价的问题。你可以说得更详细点吗? (顺便说一句,using =代替==更加可移植且符合POSIX)。 — Choroba source 第二个代码中的引号是不必要的吗? — Jhonathan 2012年 2 两个示例中的所有引号都是不必要的。 — choroba 2012年
6 经常使用分号,因为有些人(例如/ me)喜欢这样的样式: if [ ... ]; then doit-it-then else doit-it-else fi 因此,如果将then-关键字放在条件行上,则这是必需的,因为新的命令开始运行,如choroba所写。 关于条件检查中的引号,它们通常与变量一起使用,以确保如果没有为变量分配任何内容,则不会发生异常。这是一种更安全的样式,看起来不是必需的样式,但是即使在shell编程中,尽管无法将内容分配给变量,但它仍会不时地使程序处理。然后该命令仍然有效,因为比较了一个空字符串。 — 狼 source
svn up; make