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
这样就可以 取到 字符串的长度。
分享快乐,留住感动。 喜欢就给我点赞吧。