www.rtmj.net > shEll字符串比较大小

shEll字符串比较大小

可以借助awk 来判断,awk中的两个变量比较大小就是按照字符串的字典序比较的 首先我们定义一下比较大小的结果表示数码,比如大于返回1,等于返回0,小于返回2 则可以这样写:if [ $(echo $str1 $str2 | awk '$1>$2 {print 1} $1==$2 {print 0} $1then echo $str1 大于 $str2 else if [ $(echo $str1 $str2 | awk '$1>$2 {print 1} $1==$2 {print 0} $1then echo $str1 等于 $str2 else echo $str1 小于 $str2 fi

shell中有两种比较,一种是字符串比较,直接使用运算符号进行比较,一种是值的比较(即数字的比较)只能使用关键字进行比较即-eq -lt等当然也能使用关键字进行字符串的比较,比如-z 来判断一个字符串是否为空来一个例子#!/bin/basha=1if [ $a = 1 ]then echo =fiif [ $a -eq 1 ]then echo eqfi这时第一个if中的a既是进行了字符的比较,第二个if中是数值的比较.但结果是既输出了= 也输出了eq.就是说a即和数字的1相等,也和字符的1相等

方法一:你可以将两个字符串统统转成大写(或小写), 再比较#!/bin/bash xxx= "Temp " yyy= "temp " x_tmp=$(echo $xxx | tr [a-z] [A-Z]) y_tmp=$(echo $yyy | tr [a-z] [A-Z]) if [ "$x_tmp " = "$y_tmp " ];then echo "PASS " else echo "

弄成时间戳进行比较就可以了

#!/bin/shmax=9 min=8if [ $max -gt $min ] then echo 1else echo 0fi数字的比较:-eq 相等(equal)-ne 不等(not equal)-gt 大于(greater than)-lt 小于(less than)-ge 大于等于 (greater than or equal)-le 小于等于 (less than or equal)字符串的比较:[ $str1 = $str2 ] 等于[ $str1 != $str2 ] 不等于[ -z $str ] 空字符串返回true[ -n $str ] 或者 [ $str ] 非空字符串返回true

1、经测试正常2、增加一个str变量#!/bin/sha="a,b,c";b="xyz";str=`echo $a | sed -n '/^a/p'`if [[ ! -z $str ]];then echo a;else echo b;fi3、或者#!/bin/sha=$1if [[ -z "$1" ]];then echo "Usage: $0 string" exit 0;fistr=`echo $a | sed -n '/^a/p'`if [[ ! -z $str ]];then echo "Str is a beginning ";else echo "Str is not a beginning";fi

注意在=的前后各有一个空格,如果没有空格就是赋值语句,var=value与var = value不等价的,前者是赋值,后者才是比较.另外字符串比较的话请用两个中括号,因为有时单括号会产生错误,所以应该尽量避开它.还有先确认OSBIT内容是什么echo $OSBIT改成:if [ [ "$OSBIT" == "64-bit" ]] then;else if [[ "$OSBIT" = "64-bit" ]] then;fi;试试

#!/bin/sh if [ "$1" == "$2" ] ;then echo "the two string is same!" else echo "the two string is different!" fi

字符乘以1就可以转换成数字了,然后就可以比较了

A="string1" B="string2" if [ $A = $B ] then echo "$A eq $B" else echo "$A ne $B" fi

网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com