概述
1、字符串比较(字符串运算符):
str1 = str2 : 相等比较
str1 != str2 : 不等比较
str1 < str2 : str1小于str2为true,比较字母在字母表顺序,字母越靠后就越大,反之越小
str1 > str2 : str1大于str2为true,比较字母在字母表顺序,字母越靠后就越大,反之越小
-n str1 : str1长度不是0则为true
-z str1 : str1长度为0则为true,-z 是Zero简写
(1) 使用两个字符串直接进行比较
#!/bin/bash
var1="hello"
var2="world"
if [ $var1 = $var2 ];then
echo "$var1 < $var2"
# 在shell中>或<是输入或输出重定向符号,需要加反斜杠作转义
elif [ $var1 < $var2 ];then
echo "$var1 < $var2"
else
echo "$var1 > $var2"
fi
# 运行结果
~ % sh 06.condition_str_than.sh
hello < world
注:字符串比较大小,首先会将首个字符转化成ASCII码进行比较大小,如果相同会继续比较第二个字符以此类推,但是需要注意如果是数字类型的字符串如"12",进行比较会出问题,比较数字大小还是使用-gt、-lt等,大小号慎用。
(2) 对字符串作空值比较
#!/bin/bash
str1="love"
str2=" "
# str3未进行定义
str3=
if [ -n $str1 ];then
echo "$str1 is not null"
else
echo "$str1 is null"
fi
if [ -n $str2 ];then
echo "$str2 is not null"
else
echo "$str2 is null"
fi
if [ -n "$str3" ];then
echo "$str3 is not null"
else
echo "$str3 is null"
fi
# 输出结果:
~ % sh 06.condition_str_than.sh
love is not null
is not null
is null
(3)Shell中判断条件使用字符串变量时遇到坑
#!/bin/bash
if [ -n $str ];then
echo "$str is not null"
else
echo "$str is null"
fi
echo "-----------------------"
if [ -n "$str" ];then
echo "$str is not null"
else
echo "$str is null"
fi
# 运行结果
# 使用-x参数进行调试,显示整个执行过程,查看脚本实际执行命令
% sh -x 06.condition_str_than.sh
+ '[' -n ']'
+ echo ' is not null'
is not null
+ echo ----------------------------------------------
+ '[' -n '' ']'
+ echo ' is null'
is null
条件判断中使用字符串变量不加双引号作为条件,在未定义使用字符串变量时,会默认为空条件就变成“[ -n ]”,-n 就作为字符串处理,最后就变成True,所以运行脚本就会输出" is not null"。
所以在条件判断中使用字符串变量时,都加上双引号以避免不比较麻烦。
# 直接在终端运行,验证[ -n ]作为条件时输出
~ % if [ -n ];then echo yes;else no;fi
yes
最后
以上就是落后大雁为你收集整理的Shell条件测试之字符串比较的全部内容,希望文章能够帮你解决Shell条件测试之字符串比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复