shell 单中括号双中括号和gt、>和加大括号引用变量的区别
1. 区别1: 在使用单中括号判断变量能否为空的时候不加括号可能会出现异常
单括号就是test命令。test -n 判断变量能否不为空,假如不为空那么表达式返回0通过,假如是空那么表达式返回1不通过。0代表True,1代表False。test -z判断变量能否为空,假如为空表达式返回0,假如不为空返回False。下面以-z为例,演示中括号判断变量的问题。
a=""[ -z $a ]echo $? # 0a="1"[ -z $a ]echo $? # 1看上去没有什么问题。现在看一下-n。
a="1"[ -z $a ]echo $? # 0a=""[ -z $a ]echo $? # 0我们可以看到-n不论怎样样都会通过。那么如何处理呢,可以两种处理方法:
- 使用双引号包裹变量
- 使用双中括号
a=""[ -n "$a" ]echo $? # 1[[ -n $a ]]echo $? # 12 区别2: 双括号使用&&单括号使用-a语法进行多重判断
[ 1 -gt 3 -a 1 -gt 3 ][[ 1 -gt 3 && 1 -gt 3 ]]3 区别3: 正则匹配变量值只能用在双中括号
[[ $tel =~ [0-9]{10} ]]4 区别4: >在单括号使用需要加上\
PS:貌似zsh不支持,所以使用>最好使用双括号
5 >和-gt的区别
> 比较的是对应字符ascii码,-gt比较的肯定要为数字
6 加大括号引用变量区别
很简单,加大括号可以在引用变量的时候明确那个变量
? ~ a="zhangsan"? ~ echo ${a}bc zhangsanbc? ~ 不加大括号就变成引用变量abc了
最后,尽量使用双中括号。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » shell 单中括号双中括号和gt、>和加大括号引用变量的区别
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » shell 单中括号双中括号和gt、>和加大括号引用变量的区别