在我遇到的各种指南和脚本中,人们倾向于使用if语句的不同语法.有什么区别,什么是最佳实践?我相信以下所有陈述以及更多变体都将返回true:
bar="foo"
if [ "foo" = "foo" ]
if [[ "foo" == $bar ]]
if [ "foo" = "$bar" ]
if [[ "foo" = "$bar" ]]
if [[ "foo" -eq $bar ]]
Run Code Online (Sandbox Code Playgroud)
据我了解
=期望字符串
-eq期望整数
"$ bar"用于文字匹配,即z*可以扩展,但"z*"将字面上匹配通配符char.
[]和[[]]之间的区别在于,在后一个单词中,拆分和路径名称扩展没有完成,而是在前者中.
加[[]]允许其他运算符:
&&(AND),|| (OR),>(String1在词法上大于String2),<(String1在词法上小于String2)
==比较运算符在双括号测试中的行为与单括号内的行为不同.
[[$ a == z*]]#如果$ a以"z"开头(模式匹配),则为真.
[[$ a =="z*"]]#如果$ a等于z*(文字匹配),则为真.
[$ a == z*] #File globbing和word splitting发生.
["$ a"=="z*"]#如果$ a等于z*(文字匹配),则为真.
查看http://tldp.org/LDP/abs/html/comparison-ops.html了解更多信息
| 归档时间: |
|
| 查看次数: |
6940 次 |
| 最近记录: |