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

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

Re: [shell-script] Re: Erro usando o laço for


From: Julio C. Neves
Subject: Re: [shell-script] Re: Erro usando o laço for
Date: Tue, 28 Oct 2014 12:24:50 -0200

Vc está coberto de razão. Li muito rapidamente e imaginei que o * seria expandido no test.

De qq forma, me parece que o mais eficiente seria:

>index.html
for x in $(sed -r 's/ \*\.(html|txt|pdf|doc|css)//g' <<< "$(echo *.{html,txt,pdf,doc,css})")
      echo "<a href="" $x </a> <br />" >> index.html
      echo "Arquivo $x listado."
done

Assim não ocorreria fork (do pipe) e o for não faria loops + tests desnecessários

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 10 a 14/11
São Paulo 4Linux 24 a 28/11
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 28 de outubro de 2014 11:37, Paulo Bettega address@hidden [shell-script] <address@hidden> escreveu:
Olá Mestre Julio, a tua idéia de zerar a variável funcionou.

O teste se é arquivo também funciona, acho que nesse caso o loop
passa ao teste cada nome de arquivo encontrado, e o teste faz o teste
em um nome de cada vez. O loop inclusive passa o valor '*.ext' quando
não tem nenhum arquivo, daí que aparece a listagem com o asterisco.

Abraços Paulo Bettega


On 28-10-2014 10:57, 'Julio C. Neves' address@hidden [shell-script] wrote:
> Fala Paulo,
> acho que essa construção não deve funcionar pq o -f é um operador unário e se expandir para mais de
> um arquivo, deve voltar um código de erro. Eu faria assim:
>
>  > index.html
> for x in $(echo *.{html,txt,pdf,doc,css} | sed -r 's/ \*\.(html|txt|pdf|doc|css)//g'); do
>       echo "<a href="" $x </a> <br />" >> index.html
>       echo "Arquivo $x listado."
> done
>
> PS: Não sei se essa é a melhor solução, pq não vi a solicitação de ajuda original.
>
> Abcs,
> Julio
> *@juliobash*
> *Próximos cursos de Shell*
> *Cidade        LocalPeríodo*
> *Rio de JaneiroEDX <http://edx.srv.br/>10 a 14/11*
> *São Paulo 4Linux <http://www.4linux.com.br/cursos/programacao-em-shell-script>24 a 28/11*
> Dou treinamento de /Shell/ em qualquer cidade.
> Para mais detalhes, me mande um e-mail <mailto:address@hidden>.
>
>
> Em 28 de outubro de 2014 10:11, Paulo Bettega address@hidden
> <mailto:address@hidden> [shell-script] <address@hidden
> <mailto:address@hidden>> escreveu:
>
>     Uma solução pode ser testar se for arquivo.
>
>     for x in *.{html,txt,pdf,doc,css}; do
>           [ -f "$x" ] && {
>           echo "<a href="" $x </a> <br />" >> index.html
>
>           echo "Arquivo $x listado."
>           }
>     done
>
>     Mas já que tem o processamento extra do teste, pode ser
>     também a idéia do Mr.Bits "for x in $(ls *.{html,txt,pdf,doc,css})"
>
>     Bash e ksh listam o valor de x como *.html, *.txt, etc.
>     Parece que o fato dos arquivos não existirem não deixa a variável
>     nula, então o echo imprime o valor.
>
>     Abraços Paulo Bettega
>
>
>     On 28-10-2014 09:21, address@hidden <mailto:address@hidden> [shell-script] wrote:
>      > Ola, Itamar
>      >
>      >
>      > Sua sugestão também nao funcionou, veja a saída do teste que fiz:
>      > <a href="" teste1 </a> <br />
>      > <a href="" teste2 </a> <br />
>      > <a href="" teste3 </a> <br />
>      > <a href="" teste4 </a> <br />
>      > <a href="" teste </a> <br />
>      > <a href="" *.txt </a> <br />
>      > <a href="" *.pdf </a> <br />
>      > <a href="" *.doc </a> <br />
>      > <a href="" *.css </a> <br />
>      >
>      > Como pode ver , as linhas onde aparece os asteriscos são arquivos que não existe na pasta, mesmo
>      > assim o script pegou estas extensões do laço for e as listou.
>      >
>      >
>      >
>     ----------------------------------------------------------------------------------------------------
>      > Enviado por: address@hidden <mailto:address@hidden>
>      >
>     ----------------------------------------------------------------------------------------------------
>
>
>     ------------------------------------
>
>     ------------------------------------
>
>     ---------------------------------------------------------------------
>     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: address@hidden
>     <mailto:address@hidden>
>     ---------------------------------------------------------------------
>     Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
>     ---------------------------------------------------------------------
>     Servidor Newsgroup da lista: news.gmane.org <http://news.gmane.org>
>     Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
>     ------------------------------------
>
>     Links do Yahoo Grupos
>
>
>
>
> ----------------------------------------------------------------------------------------------------
> Enviado por: "Julio C. Neves" <address@hidden>
> ----------------------------------------------------------------------------------------------------


------------------------------------

------------------------------------

---------------------------------------------------------------------
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: address@hidden
---------------------------------------------------------------------
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

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    address@hidden

<*> O uso que você faz do Yahoo Grupos está sujeito aos:
    https://info.yahoo.com/legal/br/yahoo/utos/terms/




reply via email to

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