条件结构中的分号

条件结构中的分号

为什么在其中一个而不是另一个中添加分号?

结果是一样的

代码一

if [ "a" == "a" ]
then
 echo "true"
fi

代码二

if [ "a" == "a" ];
then
 echo "true";
fi

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

什么时候需要加分号?

答案1

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

if [ "a" == "a" ] ; then echo "true" ; fi

如果没有分号,您会收到语法错误。

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

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

答案2

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

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

因此,如果 then-关键字放置在条件行上,那么它是必要的,因为一个新命令将启动,如 choroba 所写。

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

相关内容