字符串操作

字符串截取与拼接

拼接字符串

1
2
3
4
your_name="six"
# 等价 say="hello word, from $your_name"
say="hello word, from ${your_name}"
echo $say

变量外面的{}是可选的,为了帮助解释器识别变量的边界,建议加上。

获取字符串长度

1
2
test_str="hello word"
echo ${#test_str}

输出 10

左边开始,字符串截取

1
2
3
# 从左边开始,0至5的字符
test_str="hello word"
echo ${test_str:0:5}

输出 hello

1
2
3
# 从左边开始,2至最后的字符
test_str="hello word"
echo ${test_str:2}

输出 llo word

右边开始,字符串截取

1
2
3
# 从右边开始,0至4位置的字符
test_str="hello word"
echo ${test_str:0-4}

输出 word

1
2
3
# 从右边开始,0至4的字符中的2个字符(从左到右)
test_str="hello word"
echo ${test_str:0-4:2}

输出 wo


#符号

#符号分割

1
2
var=http://www.aaa.com/123.htm
echo ${var#*//}

输出结果 www.aaa.com/123.htm

 #符号删除从左边//(包括//)开始的所有字符

##符号分割

1
2
var=http://www.aaa.com/123.htm
echo ${var##*/}

输出结果 123.htm

 ##号截取,删除左边字符,保留右边字符。

#与##的区别

1
2
3
# 表示从左边开始查找第一个指定的字符,删除该字符及字符左边的所有字符

## 表示从左边开始查找最后一个指定的字符,删除该字符及字符左边的所有字符
1
2
3
4
var=http://www.//aaa.com/hello/123.htm
echo "原始字符串:${var}"
echo "#删除/:${var#*/}"
echo "##删除/:${var##*/}"

输出结果

1
2
3
4
5
原始字符串:http://www.//aaa.com/hello/123.htm

#删除/:/www.//aaa.com/hello/123.htm

##删除/:123.htm

%符号

%与%%的区别

1
2
3
% 表示从右边开始查找第一个指定字符,删除该字符及字符右边的所有字符

%% 表示从右边开始查找最后一个指定字符,删除该字符及字符右边的所有字符
1
2
3
4
var=http://www.//aaa.com/hello/123.htm
echo "原始字符串:${var}"
echo "%删除/:${var%/*}"
echo "%%删除/:${var%%/*}"

输出结果

1
2
3
4
5
原始字符串:http://www.//aaa.com/hello/123.htm

%删除/:http://www.//aaa.com/hello

%%删除/:http: