基本下面引用的文章,加了几项, 做个记录,懒得记了,也省得每次Google。
http://my.oschina.net/aiguozhe/blog/41557
1. 取长度
1 |
str="abcd" |
2 |
expr length $str # 4 |
3 |
echo ${#str} # 4 |
4 |
expr "$str" : |
好像一般使用第二种
2. 查找子串的位置
1 |
str="abc" |
2 |
expr index $str "a" |
3 |
expr index $str "b" |
4 |
expr index $str "x" |
5 |
expr index $str "" |
3. 选取子串
1 |
str="abcdef" |
2 |
expr substr "$str" 1 3 |
3 |
expr substr "$str" 2 5 |
4 |
expr substr "$str" 4 5 |
5 |
|
6 |
echo ${str:2} |
7 |
echo ${str:2:3} |
8 |
echo ${str:(-2)} |
9 |
echo ${str:(-2):3} |
4. 截取子串
01 |
str="abbc,def,ghi,abcjkl" |
02 |
echo ${str#a*c} # ,def,ghi,abcjkl |
03 |
echo ${str##a*c} # jkl, |
04 |
echo ${str#"a*c"} # |
05 |
echo $[str##"a*c"} # |
06 |
echo ${str#d*f) # abbc,def,ghi,abcjkl, |
07 |
echo ${str#*d*f} # ,ghi,abcjkl |
08 |
|
09 |
echo ${str%a*l} |
10 |
echo ${str%%b*l} |
11 |
echo ${str%a*c} |
可以这样记忆, 井号(#)通常用于表示一个数字,它是放在前面的;百分号(%)卸载数字的后面;
或者这样记忆,在键盘布局中,井号(#)总是位于百分号(%)的左边(即前面) :-)
5. 字符串替换
1 |
str="apple, tree, apple tree" |
2 |
echo ${str/apple/APPLE} |
3 |
echo ${str//apple/APPLE} |
4 |
|
5 |
echo ${str/#apple/APPLE} # |
6 |
echo ${str/%apple/APPLE} |
6. 比较
*单组[]是可以的。
1 |
[[ "a.txt" == a* ]] |
2 |
[[ "a.txt" =~ .*\.txt ]] |
3 |
[[ "abc" == |
4 |
[[ "11" < |
7. 连接
1 |
s1="hello" |
2 |
s2="world" |
3 |
echo ${s1}${s2} # |
8. 在变量中保存指令执行的结果
1 |
platform=`uname -p` |
2 |
currentPath=`pwd` |
*注意两边不是单引号。
9. 分割字串到一个数组中
1 |
arguments=($(echo ${x} | tr |
10. 大小写转换
debPackName=`echo $2|awk '{print tolower($0)}'`
#转为小写
debPackName=`echo $2|awk '{print toupper($0)}'`
#转为大写