[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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=