function idx { eval 'case $1 in '${cases[*]}' *) [ "$1" ] && { cases=(
${cases[*]} '\''"'\''$1'\''") echo '${#cases[*]}';;'\'' ); echo
'${#cases[*]}';}; esac'; }

idx all
0
idx all
0
idx jhon
1
idx all
0

as you can see the function return different values for different strings
so associative array becomes quite simple like a simple array

array[`idx name`]=value
echo ${array[`idx name`]}
value




ps this is a more accurate version that make it possible to have more than
one associative array at a time
function idx { eval 'case $1 in '$(eval echo \${${2}_CASES[*]})' *) [ "$1" ]
&& { '$2'_CASES['$(eval echo \${#${2}_CASES[*]})']='\''"'\''$1'\''") echo
'$(eval echo \${#${2}_CASES[*]})';;'\''; echo '$(eval echo
\${#${2}_CASES[*]})';}; esac'; }

array1[`idx name array1`]=value
array2[`idx name array2`]=value

-- 
-----------
Tafuni Vito
vitotaf...@gmail.com
---------------------------------------------
"Verba volant, scripta manent... data corrupted"

Reply via email to