您的位置:首页 > 运维架构 > Shell

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

2017-08-06 22:54 239 查看
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


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

分享快乐,留住感动。 喜欢就给我点赞吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux命令 shell