shell 其他比较符
来源:互联网 发布:淘宝pc端首页装修教程 编辑:程序博客网 时间:2024/05/28 06:05
二元比较操作符比较两个变量或是数值。注意整数和字符串比较的分别。
整数比较
- -eq
等于
if [ "$a" -eq "$b" ]
- -ne
不等于
if [ "$a" -ne "$b" ]
- -gt
大于
if [ "$a" -gt "$b" ]
- -ge
大于等于
if [ "$a" -ge "$b" ]
- -lt
小于
if [ "$a" -lt "$b" ]
- -le
小于等于
if [ "$a" -le "$b" ]
- <
小于(在双括号里使用)
(("$a" < "$b"))
- <=
小于等于 (在双括号里使用)
(("$a" <= "$b"))
- >
大于 (在双括号里使用)
(("$a" > "$b"))
- >=
大于等于(在双括号里使用)
(("$a" >= "$b"))
字符串比较
- =
等于
if [ "$a" = "$b" ]
- ==
等于
if [ "$a" == "$b" ]
它和=是同义词。
==比较操作符在一个双方括号测试和一个单方括号号里意思不同。
1 [[ $a == z* ]] # 如果变量$a以字符"z"开始(模式匹配)则为真. 2 [[ $a == "z*" ]] # 如果变量$a与z*(字面上的匹配)相等则为真. 3 4 [ $a == z* ] # 文件扩展和单元分割有效. 5 [ "$a" == "z*" ] # 如果变量$a与z*(字面上的匹配)相等则为真. 6 7 # 多谢Stéphane Chazelas
- !=
不相等
if [ "$a" != "$b" ]
操作符在[[ ... ]]结构里使用模式匹配.
- <
小于,依照ASCII字符排列顺序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意"<"字符在[ ] 结构里需要转义
- >
大于,依照ASCII字符排列顺序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意">"字符在[ ] 结构里需要转义.
参考例子 26-11 中这种比较的一个应用.
- -z
字符串为"null",即是指字符串长度为零。
- -n
字符串不为"null",即长度不为零.
在测试方括号里进行-n测试时一定要把字符串用引号起来。用没有引号引起的! -z或者在方括号里只有未引号引起的字符串 (参考例子 7-6)来进行测试一般都能工作,然而,这其实是不安全的测试。应该总是用引号把测试字符串引起来。[1]
混合比较
- -a
逻辑与
如果exp1和exp2都为真,则exp1 -a exp2返回真.
- -o
逻辑或
只要exp1和exp2任何一个为真,则exp1 -o exp2 返回真.
它们和Bash中用于双方括号结构的比较操作符&&和||很相似。
1 [[ condition1 && condition2 ]]
-o和-a操作符和test命令或单方括号一起使用。1 if [ "$exp1" -a "$exp2" ]
可以参考Example 8-3, Example 26-16, 和Example A-28怎么实际地使用混合比较操作符。
注
[1]就像S.C.指出的那样,在一个混合测试中,把一个字符串变量引号引起来可能还不够。如果$string变量是空的话,表达式[ -n "$string" -o "$a" = "$b" ]在一些Bash版本中可能会引起错误。安全的办法是附加一个外部的字符串给可能有空字符串变量比较的所有变量,[ "x$string" != x -o "x$a" = "x$b" ](x字符可以互相抵消)。
- shell 其他比较符
- shell (bash) 比较运算符
- shell中的比较运算符
- Linux shell 比较运算符
- Linux Shell比较运算符
- shell 比较
- shell 比较
- shell(11) shell其他.doc
- linux shell if 参数 && Shell 里面比较运算符写法
- Linux 之 shell 比较运算符
- Shell 逻辑运算符、逻辑表达式、性能比较
- Linux 之 shell 比较运算符
- Linux 之 shell 比较运算符
- Linux 之 shell 比较运算符
- Linux 之 shell 比较运算符
- shell脚本比较运算符总结
- linux shell 各种比较运算符
- Linux 之 shell 比较运算符
- win7 vs2010下cuda关键字高亮的解决方案
- eclipse集成Flash Builder 4.6
- GPU通用计算——从Hello GPGPU开始
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- 如何输出dev_dbg log
- shell 其他比较符
- bochs中加载linux0.11版本遇到的一些问题
- 更换安卓应用的背景 java android
- IOS 开发之查看网络链接是否可用 - 1
- 数据结构----线性表----单向链表
- 我们努力,我们坚持,我们不怕2013
- 字符串流题目
- C或C++——strcpy函数的实现
- 嵌入式系统中看门狗的使用