tags:

views:

737

answers:

4

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

A: 

Not sure if this is exactly what you meant but:

$# = Number of arguments passed to the bash script

Otherwise you might be looking for something like man wc

Ben S
A: 
set VAR='hello world'
echo $VAR | wc -w

here is how you can check.

if [ `echo $VAR | wc -w` -gt 1 ] 
then
    echo "Hello"
fi
Mykola Golubyev
A: 

Simple method:

$ VAR="a b c d"
$ set $VAR
$ echo $#
4
Eugene Morozov
+4  A: 

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[*]}"
guns
+1 - good one. I used to use 'wc -w'. Now I stopped.
Mykola Golubyev