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

来源:互联网 发布:淘宝店铺公告在哪里 编辑:程序博客网 时间:2024/05/18 10:06

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

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

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

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


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

#!/bin/bashcurDir=$(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/bashcurDir=$(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/bashmystring="changyubiao"#mystring="chang"length=${#mystring}echo $length

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




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


原创粉丝点击