shell字符串的用法
注意:shell4.2和shell4.1會有差別,較低版本的shell可能不支持某些功能
獲取字符串長度:${#string}
獲取子串:
注:(左邊的第一個字符是用 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%/*}
%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符
結果是:http://www.aaa.com
%% 號截取,刪除右邊字符,保留左邊字符 (貪婪匹配)
echo ${var%%/*}
%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符
結果是:http: