FORUM DARKERS

Tecnologia & Informática => Programação => Shell Script => Topic started by: Imoogi on 21 de February , 2010, 02:34:19 PM

Title: imitando dicionario em shell script
Post by: Imoogi on 21 de February , 2010, 02:34:19 PM
domingão, nada pra faze, um calorão dos inferno só podia dar nisso.

eu fiz umas funçõeszinhas que mais ou menos imitam os dicionarios de Python, usando array.


#!/bin/bash

function keys(){
x=0
eval 'qu=$((${#'$1'[@]} / 2 - 1))'

for ((i=0;i<=$qu;i++))
do

eval ''$2'[$i]=${'$1'[$x]}'
x=$(($x+2))

done
}


function values(){
x=1
eval 'qu=$((${#'$1'[@]} / 2 - 1))'

for ((i=0; i<=$qu; i++))
do

eval ''$2'[$i]=${'$1'[$x]}'
x=$(($x+2))

done
}


function dict(){
eval 'qu=${#'$1'[@]}'


for ((i=0; i<=$qu; i++))
do
eval 'vec=${'$1'[$i]}'

if [ "$vec" == "$2" ]
then
v=$(($i+1))
eval ''$3'=${'$1'[$v]}'
fi
done
}




a estrutura é assim, você faz um array contendo as chaves e valores, ex:

                valor        valor     valor
                   v               v            v
arr=(joao 27 maria 23 jose 18)
          ^               ^              ^     
      chave      chave      chave



a função keys retorna um array com todas as chaves,
a sintaxe é assim.

         nome do array que esta as chaves/valores, assim msm, sem o "$"
           v
keys 'arr' 'chaves'
                      ^
                   variavel a qual você quer associar o valor que retorna da função

depois você pode tratar a variavel como um array comum

$ echo ${chaves