为什么在其中一个而不是另一个中添加分号?
结果是一样的
代码一
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 编程中,它有时也会使程序在无法将内容分配给变量的情况下进行处理。然后该命令仍然有效,因为比较的是空字符串。