LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4695|回复: 5

bash 中如何比较两个字符串

[复制链接]
发表于 2005-3-23 22:11:20 | 显示全部楼层 |阅读模式
我按照Learning the bash shell中写的脚本, 运行不正确:

#!/bin/bash
# file name cmp.sh

if [ "$1" = "$2" ]; then
    echo "$1 is equal $2"
fi
if [ "$1" > "$2" ]; then
    echo "$1 large than $2"
fi
if [ "$1" < "$2" ]; then
    echo "$1 less than $2"
fi

输入:
$> source cmp.sh hello helo
输出:
hello large than helo
hello less than helo
好象只有(=, !=, -n, -z) 才能用于字符串操作.

那位dx指点一下怎么比较字符串.
发表于 2005-3-25 15:09:40 | 显示全部楼层
据我所知,只有的确是只有(=, !=, -n, -z)才能用于字符串操作
回复 支持 反对

使用道具 举报

发表于 2005-3-25 22:40:13 | 显示全部楼层
if [ "-x$1" -eq "-x$2" ]; then
echo "$1 is equal $2"
elif [ "-x$1" > "-x$2" ]; then
echo "$1 large than $2"
else
echo "$1 less than $2"
fi
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-26 15:28:52 | 显示全部楼层
用-x也不行呀, 运行结果如下
$ ./cmp.sh hello helo
./cmp.sh: line 17: [: -xhello: integer expression expected
hello large than helo
回复 支持 反对

使用道具 举报

发表于 2005-3-28 22:05:40 | 显示全部楼层
#!/bin/bash
if [[ "$1" = "$2" ]]; then
echo "$1 is equal $2"
fi
if [[ "$1" > "$2" ]]; then
echo "$1 large than $2"
fi
if [[ "$1" < "$2" ]]; then
echo "$1 less than $2"
fi

《学习bash》,这本书我也有,不怎么灵的。。。
回复 支持 反对

使用道具 举报

发表于 2011-2-11 14:56:49 | 显示全部楼层
不小心挖坟了,在[..]中,要用到<或>比较字符串,需要用 \ 转义

[ "$a" \< "$b" ]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表