Count variables and store in an Array in bash

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[*]}"