为什么有些人在shell脚本中的if条件之后放了一个分号?

时间:2018-05-01 13:26:24

标签: bash shell

我只是习惯于编写shell脚本,而且我发现了一些我不确定如何google的内容。

在我正在阅读的教程中,它表明编写if语句的正确方法是这样的:

if [ $a == $b ]; then
  echo "a == b"
fi

但是我在代号库中看到了省略半冒号的地方:

if [ $a == $b ] then
  echo "a == b"
fi

我也见过双方括号:

if [[ $a == $b ]]; then
  echo "a == b"
fi

当我在bash中测试所有这些时,似乎并没有什么区别。有区别吗?它与兼容性有关吗?采用的正确方式是什么?

1 个答案:

答案 0 :(得分:4)

if [ $a == $b ]; then
  echo "a == b"
fi

您可以使用分号,也可以在单独的行上编写then。任何一个都是允许的。

if [ $a == $b ]
then
  echo "a == b"
fi

既没有;也没有新行是语法错误。

$ if [ $a == $b ] then
>   echo "a == b"
> fi
bash: syntax error near unexpected token `fi'

至于[ vs [[,请参阅: