一、從指定位置開始截取
這種方式需要兩個參數:除了指定起始位置,還需要截取長度,才能最終確定要截取的字符串。
既然需要指定起始位置,那么就涉及到計數方向的問題,到底是從字符串左邊開始計數,還是從字符串右邊開始計數。答案是 Shell 同時支持兩種計數方式。
1) 從字符串左邊開始計數
如果想從字符串的左邊開始計數,那么截取字符串的具體格式如下:
${string: start :length}
其中,string 是要截取的字符串,start 是起始位置(從左邊開始,從 0 開始計數),length 是要截取的長度(省略的話表示直到字符串的末尾)。
例如:
url="c.biancheng.net"
echo ${url: 2: 9}
結果為biancheng。
再如:
url="c.biancheng.net"
echo ${url: 2} #省略 length,截取到字符串末尾
結果為biancheng.net。
2) 從右邊開始計數
如果想從字符串的右邊開始計數,那么截取字符串的具體格式如下:
${string: 0-start :length}
同第 1) 種格式相比,第 2) 種格式僅僅多了0-,這是固定的寫法,專門用來表示從字符串右邊開始計數。
這里需要強調兩點:
從左邊開始計數時,起始數字是 0(這符合程序員思維);從右邊開始計數時,起始數字是 1(這符合常人思維)。計數方向不同,起始數字也不同。
不管從哪邊開始計數,截取方向都是從左到右。
例如:
url="c.biancheng.net"
echo ${url: 0-13: 9}
結果為biancheng。從右邊數,b是第 13 個字符。
再如:
url="c.biancheng.net"
echo ${url: 0-13} #省略 length,直接截取到字符串末尾
結果為biancheng.net。