在 bash 中比较两个整数时,我们是否必须加上双引号?在官方文档http://tldp.org/LDP/abs/html/comparison-ops.html 中,我可以看到每次都应该出现双引号......但以下示例有什么区别:
[ "$VAR" -eq "1" ]
[ $VAR -eq "1" ]
[ "$VAR" -eq 1 ]
[ $VAR -eq 1 ]
Run Code Online (Sandbox Code Playgroud)
我很好奇,看看 /etc/init.d 中的 Ubuntu init 脚本,里面有很多算术比较的用法,至少 [ "$VAR" -eq "1" ] 和 [ $VAR -eq 1 ] 被使用......但似乎没有人真正“知道”官方的做法是什么。
谢谢 !
$VAR如果它可能为空/未设置,您需要引用(因此您可能应该始终引用它)。
如果您不引用它并且它是空的,则该语句将导致:
[ -eq 1 ]
Run Code Online (Sandbox Code Playgroud)
这是一个语法错误。但引用1并没有获得任何好处。
(另请参阅bash 条件表达式(带有 的内容[[ ... ]]),这是测试命令的更“现代”版本,怪癖较少。)
| 归档时间: |
|
| 查看次数: |
3083 次 |
| 最近记录: |