不区分大小写如何比较shell脚本中的字符串?
方法一:你可以将两个字符串统统转成大写(或小写), 再比较#!/bin/bashxxx= "Temp " yyy= "temp "x_tmp=$(echo $xxx | tr
) y_tmp=$(echo $yyy | tr
)if ;then echo "PASS " else echo "FAIL " fi优点:通用 方法二:用expr的话,得这样:xxx=Temp if $ "` -ne 0 ] then echo "PASS " else echo "FAIL " fi 优点:高效,但是限制为特定字符序列
shell中如何比较两字符串是否相等?
比较两个字符串是否相等的办法是:
if ; then
这里的关键有几点:
1 使用单个等号
2 注意到等号两边各有一个空格:这是unix shell的要求
3 注意到”$test”x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:
-ne 不等于,如:if
-gt 大于,如:if
-ge 大于等于,如:if
-lt 小于,如:if
-le 小于等于,如:if
大于(需要双括号),如:((“$a” > “$b”))
>= 大于等于(需要双括号),如:((“$a” >= “$b”))
小数据比较可使用AWK
字符串比较
= 等于,如:if
== 等于,如:if ,与=等价
注意:==的功能在]和中的行为是不同的,如下:
1 ] # 如果$a以”z”开头(模式匹配)那么将为true
2 ] # 如果$a等于z*(字符匹配),那么结果为true
3
4 # File globbing 和word splitting将会发生
5 # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如”*.c”就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if
这个操作符将在]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if ]
if
注意:在结构中”>”需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为”null”.就是长度为0.
-n 字符串不为”null”
如何比较两个字符串的大小?
字符串是由字符组成的数组。所以比较字符串的大小就是从从左到右比较数组中每一字符的大小。
假设两个字符串较短字符串的长度为N,那么在一个长度为N的循环中,每次循环都比较两个字符串数组当前下标对应的字符——如果第一个字符小于第二个,那么比较终止,第一个字符串小于第二个字符串。同样的,如果第一个字符大于第二个字符,那么第一个字符串就大于第二个字符串。只有在两个字符相等的情况下,字符数组下标加1,进行数组中下一个字符的比较。这种比较只有在两个字符串长度相等并且每一个字符都相等的情况下两个字符串才相等。
字符串大小比较的规则?
编程判断两个串大小的方法:
首先比较两个串的第一个字符,则字母顺序靠后的大,比如:
cat>apple因为c比a更靠后
如果字母相同,则继续比较第二个。
如果比较到最后一个都相同,则分两种情况:
如果串长度相同,则这两个字符串相等,否则长度相对较长的串大。
空串比较特殊,他小于除它本身所有的串,即空串是最小的。
字符串怎么比较大小?