条件结构中的分号

Jho*_*han 40 scripting bash

为什么把分号放在一个而不是另一个?

结果是一样的

代码一

if [ "a" == "a" ]
then
 echo "true"
fi
Run Code Online (Sandbox Code Playgroud)

代码二

if [ "a" == "a" ];
then
 echo "true";
fi
Run Code Online (Sandbox Code Playgroud)

第二个代码中的分号是不必要的吗?

什么时候需要放置分号?

cho*_*oba 38

仅当缺少行尾时才需要分号:

if [ "a" == "a" ] ; then echo "true" ; fi
Run Code Online (Sandbox Code Playgroud)

如果没有分号,则会出现语法错误。

我不明白你关于报价的问题。你可以说得更详细点吗?

(顺便说一句,使用=而不是==更便携且符合 POSIX 标准)。

  • 两个样本中的所有引号都是不必要的。 (3认同)

num*_*run 9

分号经常被使用,因为有些人(例如 /me)喜欢这样的风格:

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi
Run Code Online (Sandbox Code Playgroud)

因此,如果 then-keyword 放在条件行上,那么它是必要的,因为一个新命令开始,如 choroba 所写。

关于条件检查中的引号,它们通常与变量一起使用,以确保在没有为变量分配任何内容时不会发生异常。这是一种更安全的风格,看起来没有必要,但即使在 shell 编程中,它也会不时地使程序进行处理,尽管内容无法分配给变量。然后该命令仍然有效,因为比较了一个空字符串。