bash - 为什么有些人在 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 中测试了所有这些时,似乎没有区别。有区别吗?和兼容性有关系吗?采用什么正确的风格?
解决方案
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 [[
,请参见:
推荐阅读
- javascript - 如何通过 react-crud-admin 库中的 API 调用异步获取 JSON 模式?
- php - Laravel - 未定义动作
- html - 如何将服装图像图标放入项目中
- mysql - 如何使用 laravel 查询获取两个日期之间的所有行?
- apache-kafka - 如果我将 log.segment.delete.delay.ms 设置为 0,我可以破坏任何东西吗
- angular - 可以使用 ExcelJS 和 Angular 生成带有多项选择的下拉列表吗?
- vba - 访问 VBA:无法添加没有错误 3211 的新列
- excel - 如果条件为真,则值的总和
- r - 从列表 R 在 lda 函数中插入多个变量
- botframework - 使用 WebChat 时可以在浏览器语音中选择语音吗