function tokenize { [ "$2" = "" ] && return 0 a_tok=() fnum=0 a_faddr=(0) string="$1" len="${#string}" for (( k=$len+1 ; k--;)) do if [ "${string:$len-$k:1}" = "$2" ] then let pos=$len-$k+1 let fnum++ a_faddr[$fnum]=$pos fi done a_tok[0]=${string:0:${a_faddr[1]}-1} for (( k=$fnum+1 ; k--;)) do if [ $k -ne 1 ] then let len=${a_faddr[$fnum-$k+2]}-${a_faddr[$fnum-$k+1]}-1 a_tok[$fnum-$k+1]=${string:${a_faddr[$fnum-$k+1]}:$len} else a_tok[$fnum]=${string:${a_faddr[$fnum-$k+1]}} fi done let fnum++ return $fnum } tokenize "test0 test1 test2 test3" " " tok_nb=$? for ((k=$tok_nb; k--;)) do echo ${a_tok[$tok_nb-$k-1]} done