number of tokens in bash variable

bash, split

Solution

The $# expansion will tell you the number of elements in a variable / array. If you're working with a bash version greater than 2.05 or so you can:

VAR='some string with words'
VAR=( $VAR )
echo ${#VAR[@]}

This effectively splits the string into an array along whitespace (which is the default delimiter), and then counts the members of the array.

EDIT:

Of course, this recasts the variable as an array. If you don't want that, use a different variable name or recast the variable back into a string:

VAR="${VAR[*]}"

Problem

how can I know the number of tokens in a bash variable (whitespace-separated tokens) - or at least, wether it is one or there are more.

Original source