Is there a function to return the length of a string?

The fastest way, not requiring external programs (but usable only with BASH and KornShell):

${#varname}

or for Bourne shells:

expr "$varname" : '.*'

(expr prints the number of characters matching the pattern .*, which is the length of the string.)

or:

expr length "$varname"

(BSD/GNU expr only)

This second version is not specified in POSIX, so is not portable across all platforms.

However, if $varname expands to "length", the first version will fail with BSD/GNU expr.

${#arrayname[@]}

Returns the Number of Elements in an Array.

${#arrayname[i]}

Returns the length of the Arrays Element i.


CategoryShell