首页 运维干货Shell在计算包含转义字符(\)的字符长度时的验证说明

Shell在计算包含转义字符(\)的字符长度时的验证说明

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

前面的一篇文章《[Linux]如何在Shell脚本中计算字符串长度?》介绍了如何使用Shell计算字符长度,但小魔发现当字符串中包含转义字符\时,文章所提供的几种方法会将转义字符统计在内,通过我在环境中的测试,先直接给出验证结论:
1. 若转义字符\后跟随的是特殊字符,例如:$,那么在计算字符串长度时,会自动将转义符\排除掉;
2. 若转义字符\后跟随的不是特殊字符,而是字母、数字之类的,那么在计算字符串长度时,则会将转义符\计算在内。

下面我们从这两个结论的场景去验证,详细验证过程如下:

验证场景1:当转义符\后跟随的不是特殊字符,是字母的场景,这时计算出来的字符串str="abc\n"的长度是5

[root@tektea ~]# str="abc\n"
[root@tektea ~]# echo str | wc -L
5
[root@tektea ~]# echo
str | awk -F "" '{print NF}'
5
[root@tektea ~]# echo str | awk '{print length(0)}'
5
[root@tektea ~]# echo ${#str}
5

验证场景2:当转义符\后跟随的是特殊字符,这时计算出来的字符串str="abc\$"的长度是4

[root@tektea ~]# str="abc\"
[root@tektea ~]# echo
str | wc -L
4
[root@tektea ~]# echo str | awk -F "" '{print NF}'
4
[root@tektea ~]# echo
str | awk '{print length(0)}'
4
[root@tektea ~]# echo
{#str}
4

本文链接:http://www.yunweipai.com/1941.html

网友评论comments

发表评论

电子邮件地址不会被公开。

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部