Q:

How to find length of string in shell

I need to calculate the length of a string using pure sh shell only. What is happening is that /bin/sh is actually a soft link to bash or another shell. Hence ${#STRING} gives the length of string as it is advance bash feature.
Can someone tell me how I can find length of string?
I am using Solaris 5.10 Sparc architecture

A:

wc -m counts the chars in a string. So you can do something like:
STRLENGTH=$(echo -n $STRING | wc -m)

Alternative syntax:
STRLENGTH=`echo -n $STRING | wc -m`

The -n flag for echo stops it from printing a newline. The flag might be different on Solaris 5. Check man echo

A:

Here are couple of ways to do it.
myvar="This is a test"
echo "${#myvar}"
14

Or 
expr length "${myvar}"
14

A:

Using ${#string} to get the length of $string is a POSIX shell parameter expansion.  It is not a bash-only feature.
On Solaris 5.10, if /bin/sh or /usr/bin/sh (as mentioned in the sh(1) manual) does not support this, then /usr/xpg4/bin/sh will.
To get POSIX behaviour on a Solaris 5.10 system, your PATH should be set to
/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin

(in that order), as described in the standards(5) manual.

