Unix shell-比较操作符
热度 3 已有 1930 次阅读 2011-1-12 21:40 | 个人分类: Solaris | 操作符 , shell , Unix Unix shell-比较操作符 整数比较 -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 ] # 文件扩展匹配(file globbing)和单词分割有效. 5 [ “$a” == “z*” ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真. 6 7 # 感谢, Stephane 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] compound comparison -a 逻辑与 exp1 -a exp2 如果表达式exp1和exp2都为真的话, 那么结果为真. -o 逻辑或 exp1 -o exp2 如果表达式exp1和exp2中至少有一个为真的话, 那么结果为真. 这与Bash中的比较操作符 & & 和||非常相像, 但是这个两个操作符是用在双中括号结构中的. 1 [[ condition1 & & condition2 ]] -o和-a操作符一般都是和test命令或者是单中括号结构一起使用的. 1 if [ “$exp1” -a “$exp2” ]