shell 脚本中求一个字符串的长度

xiaoxiao2021-02-28  69

shell 中没有可以直接求 某个字符串变量的长度,有时候 想判断 这个字符串的长度,该如何是好呢, 我们都知道  -n  -z  分别是 字符串不为空, 和字符串 为空。

有时候想知道,字符串的长度 ,却没有一个好的办法。 

有一个办法,可以用 awk  在awk 中有一个函数, length()  就可以 获取字符串的长度

awk 'BEGIN { print length("chang11115")'}这里就可以获取字符串的长度。

但是如果要写在shell 脚本中 需要把 shell 变量传入到   awk 中, 可以用 -v  选项。

#!/bin/bash curDir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd); #当前绝对路径 mystring='aaabbb' #把mystring ,传入到awk 中, 用 -v string=$mystring len=`awk -v string=$mystring 'BEGIN { print length(string)'}` echo "len:$len" 这样就可以了,mystring 的长度 求出来了。

如果 mystring=‘aaa bbb  ccc’ ,也就是 mystring  有空格 这个时候执行 上面脚本 就会报错。

错误如下:

[root@bdc130 shell]# sh  4.sh 

错误如下: awk: 命令行:1: 致命错误: 无法以读模式打开文件“ccc”(没有那个文件或目录) len:

这个可能是awk  -v  选项 传值的时候,以空格把它们分开了。因此,在 mystring 加上引号,就可以了.

#!/bin/bash curDir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd); #当前绝对路径 #mystring='mylinuxcentos' mystring='aaa bbb ccc' #echo "mystring:$mystring" len=`awk -v string="$mystring" 'BEGIN { print length(string)'}` echo "len:$len"

这样就可以,非常简单吧。

2017年 10月 10日 星期二 20:02:15补充:

 其实shell  脚本中是可以 直接取到字符串的长度的。

${#变量名}  这样就可以取到字符串的长度了。

#!/bin/bash mystring="changyubiao" #mystring="chang" length=${#mystring} echo $length

这样就可以 取到 字符串的长度。 

分享快乐,留住感动。 喜欢就给我点赞吧。

转载请注明原文地址: https://www.6miu.com/read-66992.html

最新回复(0)