shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: arrays -- foreach


From: Ricardo A. Reis
Subject: Re: [shell-script] Re: arrays -- foreach
Date: Sun, 23 Apr 2006 07:58:35 -0300
User-agent: Opera Mail/9.00 (FreeBSD)


 Terminei a quarta com uma dúvida de porque isso não funciona:
echo -e ${x1[*]//%//$gs_defaults/$(wmaker)\\\n}| sh

 o resultado:
sh: line 1: apply_fix: command not found
sh: line 2: apply_fix: command not found
sh: line 3: apply_fix: command not found
sh: line 4: apply_fix: command not found

Essa e' facil, apply_fix e' uma funcao local e existe nomente na instancia atual do sh(bash),
quando vc fez um pipe |sh mando executar

echo "apply_fix /home/ricardo2/Defaults/WMState apply_fix /home/ricardo2/Defaults/WMWindowAttributes apply_fix /home/ricardo2/Defaults/WindowMaker" |sh e e' obvio que em seu /etc/profile vc nao tem essa funcao, pra fazer isso funcionar vc deveria passas os diretorio
atraves de um for ou while para a funcao tratar, dessa forma td fica local.



obs:
 Acabei me conformando na quinta com uma linha
de cada vez:

for ((i=0;i<${#x1[*]};i++))
do
        for f in wmaker wmstate wmpref
        do
                $(echo -e ${x1[$i]//%//$gs_defaults/$($f)}) # | sed
"s#^#apply_fix #g;/ $/d" )
                #apply_fix ${gs_system_defaults}/$($f)
        done
done

for _dir in ${x[@]};do
        for f in wmaker wmstate wmpref;do
                apply_fix  ${_dir//%//$gs_defaults/$($f)}
        done
done


Eu achei essa forma muito mais legivel, nos scripts que faco acho importantes tomar cuidado com substituicoes do tipo ${_dir//%//$gs_defaults/$($f)}, normalmente isso dificulta a leitura, eu sempre declaro novas variaveis com o conteudo da modificacao oq vai ajudar alguem a ler e entender.




Atenciosamente

Ricardo A. Reis
UNIFESP
Unix and Network Admin

                
_______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com


reply via email to

[Prev in Thread] Current Thread [Next in Thread]