我是靠谱客的博主 落后大雁,最近开发中收集的这篇文章主要介绍Shell条件测试之字符串比较,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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条件测试之字符串比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部