摘自:http://apps.hi.baidu.com/share/detail/31263915
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"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
SHELL下的数字比较及计算举例
比较:
方法一: if [ ${A} -lt ${B} ]; then ...
这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观
方法二: if ((${A} < ${B})) then ...
这是CShell风格比较,优点:不用使用lt,gt等难记的字符串;缺点:还是只能比较整数
方法三: if (echo ${A} ${B} | awk '!($1>$2){exit 1}') then ...
这是使用awk比较,优点:可以比较小数;缺点:表达式太复杂,难记
方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-"); then ...
这是使用bc计算比较,优点:可以比较小数;缺点:表达式更复杂,难记
计算:
方法一:typeset C=$(expr ${A} + ${B});
SHELL中的基本工具,优点:方便检测变量是否为数字;缺点:只能计算整数,且只能计算加减法,不能计算乘除法
方法二:let "C=${A}+${B}"; 或 let "C=A+B"
内嵌命令计算,优点:能计算乘除法及位运算等;缺点:只能计算整数
方法三:typeset C=$((A+B))
CShell风格的计算,优点:能计算乘除法及位运算等,简介,编写方便;缺点:不能计算小数
方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')
使用awk计算,优点:能计算小数,可以实现多种计算方式,计算灵活;缺点:表达式太复杂
方法五:typeset C=${echo ${A} + ${B} | bc -q)
使用awk计算,优点:能计算小数,计算方式比awk还多,计算灵活;缺点:表达式太复杂,小数点后面的位数必须使用scale=N来设置,否则可能会将结果截断为整数
相关推荐
### Shell字符串比较与数字判断详解 #### 一、概述 在Shell脚本编程中,进行字符串和数字的比较是一项常见的任务。本文将详细介绍如何在Shell脚本中进行字符串和数字的比较,包括基本的比较操作符及其使用场景,并...
### 字符串比较 在Shell脚本中,我们可以使用不同的运算符对字符串进行比较。以下是常用的字符串比较运算符: 1. **相等比较**: `==` 或 `=` 用于检查两个字符串是否相等。例如: ```bash str1="Hello" str2=...
在Shell脚本编程中,对字符串进行排序是一个常见的任务,特别是在处理文本文件、日志或者其他包含文本数据的场景。本文将详细介绍三种在Shell中对字符串进行排序的方法。 **方法一:按ASCII正向排序** 在Shell中,...
7-Shell的字符串表达式介绍-实践及企业案例脚本剖析 8-Shell的整数表达式介绍-实践及企业案例脚本剖析 9-Shell的逻辑操作符知识介绍-实践及企业案例脚本剖析 10-Shell的各种表达式综合脚本开发实战讲解 11-利用所学...
除了这些基础的数值运算,文档还介绍了一些其他相关的高级范例,如获取一个随机数,统计字符串中各单词出现次数,以及找出一组数据中人均月收入最高的家庭。这些范例展示了Shell脚本在处理数据和统计问题上的应用...
`if`语句配合`[ ]`或`[[ ]]`进行条件测试,可以测试文件状态、数值比较、字符串匹配等。 9. **问:Shell如何实现循环?** 支持`for`、`while`和`until`循环。例如,`for i in {1..10}; do echo $i; done`将打印1...
字符串比较是Shell脚本中另一个重要的功能,通过字符串比较可以实现逻辑控制和条件判断等功能。 - **`-z string`**:如果字符串 `string` 的长度为零(即为空),则返回真值。例如 `[ -z "$myvar" ]`,此命令用于...
expr命令是一个手工命令行计算器,它不仅可以处理整数运算,还可以处理字符串。使用expr进行算数运算时,需要注意运算符与数字之间至少有一个空格。另外,使用乘号时需要用反斜线屏蔽其特殊含义,因为Shell可能会...
Shell编程范例这本书主要介绍了Shell编程的日常操作,这些操作涵盖了数值、逻辑值、字符串、文件、进程、文件系统等多个对象。这些对象的介绍和实例操作,有助于读者学以致用,并在使用过程中提高兴趣。本书并没有花...
- 字符串比较,如`if [ "$var" = "12" ]; then`。 - 正则表达式匹配,如`if [[ "$var" = *12* ]]; then`。 3. **嵌套if和循环** if语句可以嵌套在其他if或循环中,如上面的`if [ "$name" = "jxq" ]; then echo ...
5. **字符串操作**:字符串处理是Shell编程中使用非常频繁的操作,手册会介绍如何在Shell中进行各种字符串操作。 6. **文件操作**:文件系统是Linux系统的重要组成部分,学会在Shell中进行文件的基本操作是十分必要...
- `[[ ]]`提供了更灵活的字符串比较,例如可以忽略大小写,支持模式匹配。 - `(( ))`主要用于算术运算,它会将其中的内容当作数学表达式来解析和执行。 了解并熟练掌握这些操作符对于编写高效、准确的Shell脚本至关...
Shell 支持变量的条件测试,例如使用 test 命令或 [] 进行数值和字符串的比较,如 -eq(相等)、-ne(不等)、-gt(大于)、-lt(小于)、=(相等)、!=(不等)等。还支持判断文件类型和权限,如 -f(文件)、-d...
* 变量默认类型都是字符串类型,无法直接进行数值运算 * 变量的值如果有空格,需要使用双引号或单引号括起来 变量可以通过 unset 命令来撤销,例如 unset A。 readonly 命令可以用来声明静态变量,例如 readonly A=...
- **字符串比较**:比较两个字符串是否相等。 - **数值比较**:比较两个数字大小。 - **循环结构**: - **`for`循环**:遍历列表或字符串中的元素。 - **`while`循环**:当条件为真时重复执行一系列指令。 - *...
Shell提供了多种字符串操作方法,包括: - 获取字符串长度:`${#parameter}`。 - 获取子字符串:`${parameter#word}`, `${parameter##word}`, `${parameter%word}`, `${parameter%%word}`。 - 字符串替换:`${...
讲解字符串操作技巧,利用awk进行更高级的字符串处理,介绍参数替换方法,提高脚本的数据处理能力。 ### 综合应用与实践 书中不仅提供了理论知识,还设计了丰富的实践案例,鼓励读者动手实践,通过实际编写脚本来...
- Shell支持多种条件测试,如文件测试(-f、-d等)、数值比较(-eq、-ne等)和字符串比较(=、!=等)。 - `if`语句结合`test`或`[ ]`命令进行条件判断,如`if [ -f "$FILE" ]; then ... fi`。 4. **流程控制** -...
字符串处理-01、字符串处理.mp4 数值运算-01、数值运算及处理.mp4 服务脚本设计-01、处理变量及字符串.mp4 服务脚本设计-02、条件测试与判断.mp4 服务脚本设计-03、选择与循环.mp4 服务脚本设计-04、case分支与服务...