Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较)
一.概述
接着上篇讲的结构化命令,最后讲到了test命令的另一种写法 if [ condition ],它的语法格式如下:
--格式如下: if [ condition ] then commands fi
第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错。test命令可以判断三类条件:(1)数值比较(2)字符串比较(3)文件比较。
1.1 数值比较
比较 |
描述 |
例如 |
n1 -gq n2 |
检查n1是否与n2相等 |
N1 ==N2 |
n1 -ge n2 |
检查n1是否大于或等于n2 |
N1 >=N2 |
n1 -gt n2 |
检查n1是否大于n2 |
N1 < N2 |
n1 -le n2 |
检查n1是否小于或等于n2 |
N1 <=N2 |
n1 -lt n2 |
检查n1是否小于n2 |
N1 <N2 |
n1 -ne n2 |
检查n1是否不等于n2 |
N1 !=N2 |
下面测试脚本中,第一个条件使用 -gt, value1是否大于value2。 第二个条件使用-eq 测试value1 是否与value2相等。
但涉及到浮点数时,就会出错,bash shell 只能处理整数,如下所示:
对于浮点数处理,在前面章节中讲过使用bc 命令,下面脚本中先用bc来判断,如果条件成立则返回1, 条件不成立返回0, 下面的var1变量返回为1,输出了echo语句信息。
1.2 字符串比较
比较 |
描述 |
str1 = str2 |
检查str1是否与 str2 相同 |
str1 != str2 |
检查str1是否与 str2 不同 |
str1 < str2 |
检查str1是否比 str2 小 |
str1 > str2 |
检查str1是否比 str2 大 |
-n str1 |
检查str1的长度是否非0 |
-z str1 |
检查str1的长度是否为0 |
(1) 字符串相等案例, 相等成立,输出了echo 信息。不等于案例就不在演示。
(2) 字符串比较
对于字符串比较,在编程中很少使用,这里不在演示。 比较是使用标准的ascii顺序。
(3) 字符串大小
使用-n 和 -z 可以检查一个变量是否有数据,如下所示变量value1的值不为空,条件成立。
下面一个案例是 value1变量从未被定义过, 判断长度是否为0, 未被定义的变量但长度仍然是0,输出了if then中的echo信息。
总结:空的和未初始化的变量会对shell脚本测试造成空难性的影响,如果不确定一个变量的内容,最好在将用于数值或字符串比较之前先通过-z来测试变量是否有值。 下面案例中valu1变量未定义,value2变量内容为空,value3变量内容不为空, 分别输出信息如下:
- Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)
- Linux-Shell脚本编程-学习-6-Shell编程-使用结构化命令-文件比较-case编程
- Linux-Shell脚本编程-学习-5-Shell编程-使用结构化命令-if-then-else-elif
- 第3章 shell结构化命令------------(shell的数值比较、shell的字符串比较、shell的文件比较、shell的条件组合操作)
- Linux基础day4,shell编程,感觉比较经典的:删除字符串中重复字符
- linux $* 和$@ if [ ](字符串比较)
- linux shell 编程1文件权限检测、字符串比较判断、数值大小比较、时间获取以及单引号双引号反引号等的使用
- shell编程之结构化命令if-then
- Linux文本处理之如何比较很长的字符串
- Linux-Shell脚本编程-学习-3-Shell编程-shell脚本基本格式
- Linux网络编程--字符串IP和二进制IP转换
- Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
- kshell 如何比较两个数值或字符串 "test" [[ ]]" "(())" "[ ]"
- Linux命令行与shell编程笔记 结构化命令
- linux平台学x86汇编(十三 ):字符串的比较与搜索
- linux编程里有这么一句if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1 ),请问是de意思?
- mybaties if 比较字符串内容
- mybatis,在使用if test进行字符串比较
- Linux下Socket编程之read、write、send、recv函数的比较
- javaScript中自定义sort中的比较函数,用于比较字符串长度,数值大小