shell中的test命令—字符串比较

Novia ·
更新时间:2024-09-21
· 673 次阅读

shell中的test命令—字符串比较1. 字符串比较功能2. 比较字符串是否相等3. 比较字符串的大小4. 比较字符串的长度 1. 字符串比较功能

test命令的字符串比较功能:

比较 说明
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
2. 比较字符串是否相等

方法:

[ str1 = str2 ] [ str1 != str2 ]

例1:

#!/bin/bash #比较字符串是否相等 testing=root if [ $USER = $testing ] then echo "Welcome $testing" else echo "This is not $testing" fi

注意:test比较字符串相等性时会将所有的标点和大写也考虑在内
在这里插入图片描述

例2:

#!/bin/bash #比较字符串是否不同 testing=student if [ $USER != $testing ] then echo "This is not $testing" else echo "Welcome $testing" fi

在这里插入图片描述

3. 比较字符串的大小

方法:

[ str1 str2 ]

注意:这里比较的是字符串,而不是字符串的长度

字符串大小的比较遵循字典顺序,规则如下:

1.如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about) 2.从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball) 3.如果第一个字符相同,再比较第二个(比如about小于above)

总之,如果你查字典,字典排在前面的单词比后面的小。

例:

#!/bin/bash val1=baseball val2=hockey #大于小于符号必须转义 #否则shell会把它们当作重定向,而把字符串当作文件名 if [ $val1 \> $val2 ] then echo "$val1 is greater than $val2" else echo "$val1 is less than $val2" fi

在这里插入图片描述

4. 比较字符串的长度

方法:

[ -n str1 ] #检查str1的长度是否非0 [ -z str1 ] #检查str1的长度是否为0

例:

#!/bin/bash val1=testing val2='' if [ -n "$val1" ] then echo "The string '$val1' is not empty" else echo "The string '$val1' is empty" fi if [ -z "$val2" ] then echo "The string '$val2' is empty" else echo "The string '$val2' is not empty" fi if [ -z "$val3" ] then echo "The string '$val3' is empty" else echo "The string '$val3' is not empty" fi

注意:没有被定义的字符串长度默认为0
在这里插入图片描述


作者:Kaiser king



字符串比较 字符串 shell 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号