如何在shell中找到字符串的长度

Nir*_*raj 14 shell sh shell-script

我只需要使用纯 sh shell 来计算字符串的长度。发生的事情/bin/sh实际上是到 bash 或其他 shell 的软链接。因此${#STRING}给出字符串的长度,因为它是高级 bash 功能。

有人能告诉我如何找到字符串的长度吗?我使用的是 Solaris 5.10 Sparc 架构

Pet*_*mby 17

wc -m计算字符串中的字符数。因此,您可以执行以下操作:

STRLENGTH=$(echo -n $STRING | wc -m)
Run Code Online (Sandbox Code Playgroud)

替代语法:

STRLENGTH=`echo -n $STRING | wc -m`
Run Code Online (Sandbox Code Playgroud)

-necho的标志阻止它打印换行符。Solaris 5 上的标志可能不同。检查man echo

  • @Niraj:使用 `printf` 而不是 `echo`。它也应该无处不在,并且在任何地方都一样。 (4认同)

R J*_*R J 10

这里有几种方法可以做到。

myvar="This is a test"
echo "${#myvar}"
14
Run Code Online (Sandbox Code Playgroud)

或者

expr length "${myvar}"
14
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 9

用于获取POSIX shell 参数扩展${#string}的长度。它不是唯一的功能。$stringbash

在 Solaris 5.10 上,如果/bin/sh/usr/bin/sh(如手册中所述sh(1))不支持此功能,则将/usr/xpg4/bin/sh支持。

要在 Solaris 5.10 系统上获得 POSIX 行为,您PATH应该设置为

/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

(按顺序),如standards(5)手册中所述。