shell运算符:算数,关系,布尔,字符串,文件测试
原生bash不支持简单的数学运算,可通过awk expr实现,expr最常用
expr是一款表达式计算工具,使用它能完成表达式的求值操作
示例如下:
1 val=` expr2 + 2 `
2echo" Total value : ${val} "
注意
1.表达式和运算符之间要有空格
2.完整表达式要被``包含
算数运算符
示例如下: + - * / % == !=
1 a=10 2 b=20 3 4 val=` expr ${a} + ${b} `
5echo" a + b : ${val} " 6 7 val=` expr ${a} - ${b} `
8echo" a - b : ${val} " 910 val=` expr ${a} * ${b} ` #乘号前必须加才能实现惩罚运算#
11echo" a * b : ${val}"1213 val=` expr ${b} / ${a} `
14echo" b / a : ${val} "1516 val=` expr ${b} % ${a} `
17echo" b % a : ${val} "1819if [ ${a} == ${b} ] #条件语句写法,后续加入.此条件返回的是true or false,空格不能少#
20then21echo" a is equal to b "22fi2324if [ ${a} != ${b} ]
25then26echo" a is not equal to b"27fi
关系运算符
关系运算符:只支持数字,不支持字符串,除非字符串的值是数字
关系运算符列表
1. -eq 检测两个数是否相等,返回true [ ${a} -eq ${b} ] equal
2. -ne 检测两个数是否相等,返回false [ ${a} -ne ${b} ] not euqal
3. -gt 检测左边是否大于右边,返回true [ ${a} -gt ${b} ] greater than
4. -lt 检测左边是否小于右边,返回false [ ${a} -lt ${b} ] less than
5. -ge 检测左边是否大于等于右边,返回true [ ${a} -ge ${b} ] greater or equal
6. -le 检测左边是否小于等于右边,返回false [ ${a} -le ${b} ] less or equal
示例如下:
1 a=102 b=203if [ ${a} -eq ${b} ]
4then5echo" a is equal to b "6else7echo" a is not equal to b "8fi
布尔运算符
布尔运算符列表
1. ! 非 [ !false ]
2. -o 或 [ ${a} -lt 20 -o ${b} -gt 100] a<20或b>100 返回true
3. -a 与 [ ${a} -lt 20 -a ${b} -gt 100] a<20并且b>100 返回true
示例如下:
1 a=102 b=11034if [ ${a} -lt 20 -a ${b} -lt 100 ] #a<20并且b<100#
5then6echo" a<20或b<100成立!"7else8echo" 不成立! "9fi
字符串运算符
字符串运算符列表
1. = 检测两个字符串是否相等 [ ${a} = ${b} ]
2. != 检测两个字符串是否相等 [ ${a} = ${b} ]
3. -z 检测字符串长度是否为0,返回true [ -z ${a} ]
4. -n 检测字符串长度是否为0,返回false [ -n ${a} ]
5. str 检测字符串是否为空,不为空返回true [ ${a} ]
示例如下:
1 a="abc" 2 b="abc" 3 4if [ ${a} = ${b} ]
5then 6echo" ${a} = ${b} : a is equal to b " 7else 8echo" ${a} = ${b} : a is not equal to b " 9fi1011if [ ${a} != ${b} ]
12then13echo" ${a} != ${b} : a is not equal to b "14else15echo" ${a} != ${b} : a is equal to b "16fi1718if [ -z ${a} ]
19then20echo" -z ${a} : String length is zero "21else22echo" -z ${a} : String length is not zero "23fi2425if [ -n ${b} ]
26then27echo" -n ${b} : String length is not zero "28else29echo" -n ${b} : String length is zero"30fi
原文:http://www.cnblogs.com/blog4matto/p/5565089.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!