Linux拓展之Shell中求字符串的长度

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux拓展之Shell中求字符串的长度相关的知识,希望对你有一定的参考价值。

概述

在 shell 脚本中,有时候需要去求字符串的长度。如下展示了常见求字符串长度的方法。


方法

变量 str 是一个字符串,由于字符串中可能有空格存在,所以引用字符串的值时使用 $str 格式而非 $str(如果要使用则需要加上引号 "$str")。

方法一

# 语法
$#str]
# 示例
str="hello world"
echo $#str

方法二

利用 awk 命令的 length 方法。命令格式如下:

# 语法
echo $str | awk 'print length($0)'
# 示例
str="hello world"
echo $str | awk 'print length($0)'

方法三

利用 awk 命令的 NF 内置变量和 -F 选项设置字符串的分隔符,即字符串的长度。

# 语法
echo $str | awk -F "" 'print NF'
# 示例
str="hello world"
echo $str | awk -F "" 'print NF'

方法四

利用 wc 命令的 -L 选项,-L 选项表示获取最长行的长度。对于单个字符串来说,该选项能获取字符串的长度。命令格式如下:

# 语法
echo $str | wc -L
# 示例
str="hello world"
echo $str | wc -L

方法五

利用 wc 命令的 -c 选项,-c 选项用于统计字符的个数。但是在使用 echo 命令将字符串通过管道符输送给 wc 命令时需要加上 -n 选项,表示去掉字符串的 "\\n" 换行符,如果不去掉的话,字符个数就会多一个。命令格式如下:

# 语法
echo -n $str | wc -c
# 示例
str="hello world"
echo -n $str | wc -c

方法六

利用 expr 命令的 length 方法。命令格式如下:

# 语法
expr length "$str"
# 示例
str="hello world"
expr length "$str"

注意:如果使用 expr 命令求字符串长度的方法,传入的字符串中如果有空格,那么使用 $str 引用会失败报错,所以需要使用 "$str" 的方式进行引用。

方法七

利用 expr 命令的 STRING : REGEXP 匹配字符串,其中 STRING 是待匹配的字符串;REGEXP 是正则表达式,这里用 ".*" 表示匹配任意多个字符。命令格式如下:

# 语法
expr "$str" : ".*"
# 示例
str="hello world"
expr "$str" : ".*"

示例

对于上面的几种方法,如下 shell 脚本可做验证:test.sh

#!/bin/bash

# 参数校验
if [ ! $# -eq 1 ]; then
		echo "请输入一个参数"
		exit
fi

# 读入一个参数作为待求长度的字符串
str="$1"

## 方法一
len=$#str
echo "方法一:$len"

## 方法二
len=$(echo $str | awk 'print length($0)')
echo "方法二:$len"

## 方法三
len=$(echo $str | awk -F "" 'print NF')
echo "方法三:$len"

## 方法四
len=$(echo $str | wc -L)
echo "方法四:$len"

## 方法五
len=$(echo -n $str | wc -c)
echo "方法五:$len"

## 方法六
len=$(expr length "$str")
echo "方法六:$len"

## 方法七
len=$(expr "$str" : ".*")
echo "方法七:$len"

以上是关于Linux拓展之Shell中求字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章

Linux拓展之Shell变量扩展${}

Linux拓展之使用 shell 进行数学运算

Linux拓展之Shell默认变量值

Linux拓展之调试脚本

linux shell 之if-------用if做判断

linux之Shell编程--Shell基本运算符之字符串运算符和文件运算符实例演示