Shell变量的高级用法(二)——字符串处理

获取字符串长度

语法 说明
方法一 ${#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开始计算。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容