Shell中比较字符串大小

来源:互联网 发布:充话费软件哪个好 编辑:程序博客网 时间:2024/05/01 08:25

发现shell中条件判断(比如 if [ $1 -gt $2]; then....)只支持数字类型的比较。

如果需要比较字符串(比如 if [ "p1" -gt "p2"]; then....),是会报语法错误的。

 

其实可以借助于awk完成字符串的比较,以下是一个实际的使用场景。

 

要求:比较p1和p2这两个字符串的大小

代码:

----

set a="p1"
set b="p2"
_tmp_compare=`echo $a $b | awk '$1>$2 {print "$1 greater then $2"}'`
echo "_tmp_compare:"$_tmp_compare
if [ -n "$_tmp_compare" ]; then
  echo "111111111111111"
else
  echo "222222222222222"
fi
----

 

代码意图

1,以下仅为测试而定义的变量,实际使用场景中随时可以被替换

set a="p1"
set b="p2"

 2,_tmp_compare是主要的变量,如果运行之后_tmp_compare为空,则说明$a比$b小

3,echo $a $b的输出将被用于awk命令

4,awk '$1>$2 {print "$1 greater then $2"}意图比较明显,就是与【2】的思想相结合

原创粉丝点击