Eu nao tenho certeza mais acho isso nao e possivel com bash, talvez com 
zsh!!
o qual mesmo usando nao conheco muito,

Eu melhoraria o seu codigo, voltando o loop .. algo assim

homes=(`awk -F: '($3 >= 1001) && ($3 != 65534) { print $6 }' /etc/passwd`);

for home in [EMAIL PROTECTED];do
         if [ -d  $home/Defaults ];then
                 x=(`ls -d $home/Defaults/*`)
                 echo -e ${x[*]//%/\/$gs_defaults\/$(wmaker)\\\n} | sed 
's#^# apply_fix #g'
         fi
done

Pra simular um hash do perl, eu ja usei varias vezes algo como

while read key element;do
       if   [ $key == "fruta" ];then
            echo $element
       elif [ $key == "verdura" ];then
            echo $element
      else
            echo "NADA"
      fi
done < /tmp/XXXXX

      Onde eu usava paste pra concatenas colunas e relacionando a primeira 
a segunda,

algo como

fruta banana
fruta pera
verdura xxxx
verdura xxxx

       Tomara que isso tenha ajudadi de alguma forma, qualquer coisa me 
manda um email


Atenciosamente

Ricardo A. Reis
UNIFESP
Unix and Network Admin
On Tue, 18 Apr 2006 14:42:24 -0300, oteb_04 <[EMAIL PROTECTED]> wrote:

>  Olá
>
>  Estou vendo como resolver um item da lista de coisas a serem feitas
> em um script(upgrade-windowmaker-defaults do pct .deb). Uma das coisas
> que estimula a tarefa é que talvez isso matenha o script em #!/bin/bash
> e o autor não faça a tradução para perl.
>
>  O item: * Fix that ugly hack with fix*
> #Is there something in the shell like Perl's hashes? It could be nice to
> #do something like "foreach $var (keys %fixes)" to associate fixes with
> #file names so I don't have to track things all over the place
>
>  Vi no capitulo 26 do guia abs[0] uma menção ao for-each(Example
> 26-4), mas
> não sei bem como é isso em perl. A pergunta é: como se faz um
> "foreach $var (keys %fixes)" em shellscript?
>
>  O que fiz até agora foi, ao invéz de usar um loop for, como no
> script:
>
> for dir in `cut -d : -f 6 /etc/passwd | sort -u` ; do
>   apply_fix $dir/$gs_defaults/WindowMaker "$fix1" "$fix2" $fix6"
>   apply_fix $dir/$gs_defaults/WMState "$fix3"
>   apply_fix $dir/$gs_defaults/WMWindowAttributes "$fix4"
> done
>
> usar uma linha dessas:
> x=( `ls -d /home/*` )
> echo -e ${x[*]//%/\/$gs_defaults\/$(wmaker)\\\n} | sed
> 's#^# apply_fix#g'
>
>  Isso retorna uma linha para cada usuário:
> apply_fix /home/user/Defaults/WindowMaker $1 $2 $3
> ...
>
> sendo $(wmaker) uma chamada para a função que contém os $fixn. Teria
> que ter uma linha para cada um dos WindowMaker, WMState,
> WMWindowAttributes.
>
>  Fora o uso do 'ls -d /home/*' para filtrar melhor os diretórios, não 
> vejo
> alguma melhora do que fiz em relação ao que já existe. Se alguém
> puder esclarecer um pouco o assunto seria muito bom.
>
>
>  []
>  hpfn
>
>
> [0] - http://www.tldp.org/LDP/abs/html/arrays.html
>
> - a função apply_fix
> apply_fix ()
> {
>   file_to_fix=$1; shift
>   if [ -e $file_to_fix ] ; then
>     echo -n "Fixing $file_to_fix... "
>     while [ $# -gt 0 ] ; do
>       sed -e "$1" $file_to_fix > $tempfile
>       cat $tempfile > $file_to_fix
>       shift
>     done
>     echo done.
>   fi
> }
>
> - a função wmaker
> wmaker(){
>  echo -n 'Wmaker $1 $2 $3';
> }
>
>
>
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, 
> como perl, C etc. Quem insistir em não seguir esta regra será moderado 
> sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>
>
>
>



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

           
_______________________________________________________
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz.
http://br.info.mail.yahoo.com/


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil





Links do Yahoo! Grupos

Responder a