通过一个例子,说明shell 的字符串操作
nameLen=${#name}
if [ $nameLen -gt 15 ]; then
name=${name:$nameLen-15}
echo "name is truncated to '$name'"
fi
1) 取长度
nameLen=${#name}
2) 长度比较
相当于执行命令 test -gt 15, 手工输出会发现下面是等价的
$ test 3 -eq 2
$ echo $?
1
$ [ 3 -eq 2 ]
$ echo $?
1
$ [ 3 -eq 3 ]
$ echo $?
0
关于 "[" 见
http://my.hupu.com/hansomeboy/blog/5627271.html
3) 取子串
name=${name:$nameLen-15} #取最后15位; 再来一个取前5位的例子
name="adcdefg"
$ name=${name:0:5}
$ echo $name
adcde
要点: a) 用 "{ }" b) 里面用 ":"
4) 字符串比较
进行了下面的实验,总结 a) "==" , "=" 好像都可以 b) -eq, -gt 用来比较数字, 而”==“,"="用来比较串
$ test "t" == "t"
$ echo $?
0
$ test "t" == "t1"
$ echo $?
1
$ test "t" = "t1"
$ echo $?
1
5) 部分匹配
给你个函数吧
function strstr ( )
{
echo $1 | grep --quiet $2
}
使用方法如下(下面的程序在当前命令行中查看是否 “help”)
if $( strstr "$*" help ); then
...
fi