獲取字符串長度
語法 | 說明 | |
---|---|---|
方法一 | ${#string} | 無 |
方法二 | expr length "$string" | string有空格,則必須加雙引號 |
抽取子串
語法 | 說明 | |
---|---|---|
方法一 | ${#string:position} | 從string中的左邊position開始匹配(不包含position) |
方法二 | ${#string:(-position)} | 從string中的右邊position開始匹配(包含position) |
方法三 | ${#string:position:length} | 從position開始,匹配長度為length |
方法四 | expr substr $string $position $length | 從position開始,匹配長度為length |
Tips: 在mac os原生的shell環境中使用expr,會報syntax error錯誤。
示例
1.計算字符串長度
方法一:${#string}
例子:
? ~ string="Hello World"
? ~ len=${#string}
? ~ echo $len
11
方法二:expr length "$string"
例子:
? ~ string="Hello World"
? ~ len=`expr length "$string"`
? ~ echo $len
11
2.獲取字符串索引位置
方法:expr index "$string" substr
例子:
string="Hello World"
idx=`expr index "$string" world`
注意:獲取索引會將字匹配的字符串進行字符拆分,根據字符進行匹配。比如:world字符串會被拆成w o r l d進行逐個字符匹配,先匹配到哪個字符就會返回對應索引,并不是真個字符串都匹配上才返回索引。
3.抽取字符串中的子串
方法一:${string:position}
例子:從string中的左邊第2個位置開始匹配。
? ~ string="1234567890"
? ~ sub_str=${string:2}
? ~ echo $sub_str
34567890
方法二:${string: -position}
例子:從string中的右邊第2個位置開始匹配。
? ~ string="1234567890"
? ~ sub_str=${string:(-2)}
? ~ echo $sub_str
90
注意:${string:<空格>-position} 或者${string:(-position)}
方法三:${string:position:length}
例子:從位置2開始,匹配長度為3的子串。
? ~ string="1234567890"
? ~ sub_str=${string:2:3}
? ~ echo $sub_str
345
注意:使用expr,索引計數是從1開始計算;使用${string:position},索引計數是從0開始計算。