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

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

Re: [shell-script] duvida usando funcao dentro de for


From: Moacir Souza
Subject: Re: [shell-script] duvida usando funcao dentro de for
Date: Sat, 13 Dec 2008 10:48:20 -0200

     Olá Rafael,

> estou com um probleminha com o for abaixo:
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> diff=3
>
> for ((i=1; i<=$diff; i++))
> do
> cmd 1
> cmd 2
>
> funcao $a $b
> done
>
> instrucaoDepoisDoFor
> a primeira iteracao do for funciona, ele executa os comandos e entra na
> funcao, executa tudo que deveria executar na funcao mas quando ele acaba as
> instrucoes da funcao ele retorna direto para instrucaoDepoisDoFor

     Fiz um pequeno script na tentativa de reproduzir o seu problema,
mas ele não se comportou mal, como no seu caso. O for executou quatro
iterações, a função foi chamada quatro vezes e por fim o comando
depois do for, que também é uma função, foi executado numa boa. Veja
abaixo o que acontece:

$ cat teste
#!/bin/bash

diff=3

foraDoFor(){
        mkdir diretorio
}

funcao(){
        echo -e "Argumento Um: $1 || Argumento Dois: $2 \n"
}

### For problemático
for ((i=0;i<=$diff;i++)){
        echo "primeiro"
        echo "segundo"

        funcao terceiro quarto
}

foraDoFor

$ ./teste
primeiro
segundo
Argumento Um: terceiro || Argumento Dois: quarto

primeiro
segundo
Argumento Um: terceiro || Argumento Dois: quarto

primeiro
segundo
Argumento Um: terceiro || Argumento Dois: quarto

primeiro
segundo
Argumento Um: terceiro || Argumento Dois: quarto

> sera que preciso retornar algo na minha instrucao para ele saber que tem que
> continuar dentro do for ?

     Se a função chamada dentro do for tiver um exit 0 no final, aí
sim só a primeira execução será realizada, mas a função externa não
vai. Se ao invés do exit 0 houver um return 0, o comportamento também
é o mesmo que apresentei acima. A não ser que eu tenha representado
mal o seu problema com meu script (fiz tudo bem simples, claro). Nesse
caso seria interessante você repassar algum snippet do código real
para ver se a gente encontra algum problema.

Abraços,
Moacir Filho

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Moacir da Cruz Souza Filho

-Analista de Sistemas: Suporte Unix Avançado
Serviço Federal de Processamento de Dados

-Mestrando em Ciências da Computação
Universidade de Brasília

-Bacharel em Engenharia da Computação
Escola Politécnica de Pernambuco
Universidade de Pernambuco

-Técnico em Eletrônica
Escola Técnica Federal de Pernambuco

-Linux user #449600
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Página pessoal: http://moacir.souza.googlepages.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


reply via email to

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