shell字符串的用法
shell字符串的用法
注意:shell4.2和shell4.1会有差别,较低版本的shell可能不支持某些功能
-
获取字符串长度:$
-
获取子串:
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
- ${string:position} 从左边position开始到最后
- ${string:position:length} 从position开始length个字符
- ${string:begin:-end} 表示从左边begin个字符开始,到从右边end个字符结束
- $(string:(-postion)) 如果使用负数,表示从positon处开始到最右边所有的字符;注意负数必须使用括号
- $(string:(-postion):length)
- ${var:0-start:len} 从右边第几个字符开始以及字符的个数
- ${var:0-start} 从右边第几个字符开始一直到结束
-
贪婪和非贪婪:
var=http://www.aaa.com/123.htm
-
# 号截取,删除左边字符,保留右边字符。 (非贪婪匹配)
echo ${var#*/}
其中 var 是变量名,# 号是运算符,*/ 表示从左边开始删除第一个 / 号及左边的所有字符
即删除 http:/
结果是 :/www.aaa.com/123.htm
-
## 号截取,删除左边字符,保留右边字符。(贪婪匹配)
echo ${var##*/}
(##*/) 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除http://www.aaa.com/
结果是 123.htm
-
%号截取,删除右边字符,保留左边字符 (非贪婪匹配)
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
-
%% 号截取,删除右边字符,保留左边字符 (贪婪匹配)
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
-