首页 > 解决方案 > 为什么有些人在 shell 脚本中的 if 条件后加分号?

问题描述

我刚刚习惯了 shell 脚本,我遇到了一些我不太确定如何用谷歌搜索的东西。

在我正在阅读的教程中,它表明编写 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 中测试了所有这些时,似乎没有区别。有区别吗?和兼容性有关系吗?采用什么正确的风格?

标签: bashshell

解决方案


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

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

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

既没有 a;也没有换行符是语法错误。

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

至于[vs [[,请参见:


推荐阅读