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

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

Re: [shell-script] Dúvida besta porem persistente


From: jimmy
Subject: Re: [shell-script] Dúvida besta porem persistente
Date: Tue, 30 Sep 2008 10:23:30 -0300
User-agent: Mutt/1.4.2.3i

se o arquivo "lista" existe use ele como argumento

muda o conteúdo do mycat para:
#!/bin/ksh
cat $(<$1)

e testa com:

./mycat lista


On Tue, Sep 30, 2008 at 09:57:33AM -0300, Breno Moiana wrote:
> Achei as soluções apresentadas aqui muito interessantes, e fui usar.
> Cheguei a uma dúvida bem simples até: com cat esse tipo de
> concatenação direta funciona. Mas em termos de mecânica de script, não
> substitui um loop. Temos um atalho para loop que nao seja o uso do for
> com toda a sua sintaxe? (Administrador bom é administrador preguiçoso,
> não é isso, Julio? ;)
> 
> Já explico:
> 
> arquivos:
>     -rwxr-xr-x   1 evrbatch   sapbatch        17 Sep 30 07:45 mycat.sh
>     -rw-r--r--   1 evrbatch   sapbatch        53 Sep 30 07:49 um
>     -rw-r--r--   1 evrbatch   sapbatch        54 Sep 30 07:49 dois
>     -rw-r--r--   1 evrbatch   sapbatch        48 Sep 30 07:49 tres
>     -rw-r--r--   1 evrbatch   sapbatch        13 Sep 30 07:44 lista
> 
> Conteudo do mycat.sh:
>     #/bin/ksh
>     cat $1
> 
> Agora... vejam só
> 
>     $ cat lista
>     um
>     dois
>     tres
> 
>     $ cat $(<lista)
>     um
>     umaumaumaumumu mum aumaum uamua maumamuau maumuam
>     dois
>     doisodisodisodi sodisoidosidos dosidosiodisodi s
>     tres
>     trstsrter strestersteserstrestrestrtesrets
> 
> 
> Até aí, tudo bem. Porém, se uso meu script, ele só pega o primeiro:
> 
>     $ ./mycat.sh $(<lista)
>     um
>     umaumaumaumumu mum aumaum uamua maumamuau maumuam
> 
> Eu acredito que isso seja porque o cat me permite passar vários
> arquivos como parâmetro, enquanto meu script só usa o $1.
> 
> Trocando no script o $1 por $*:
> 
>     $ ./mycat.sh $(<lista)
>     um
>     umaumaumaumumu mum aumaum uamua maumamuau maumuam
>     dois
>     doisodisodisodi sodisoidosidos dosidosiodisodi s
>     tres
>     trstsrter strestersteserstrestrestrtesrets
> 
> Mas e se eu nao quiser/puder mudar o script, ou se for um comando que
> só suporta um parametro por vez? Temos outras opções ao invés do loop?
> 
>     $ for parm in $(cat lista); do ./mycat.sh $parm;done
>     um
>     umaumaumaumumu mum aumaum uamua maumamuau maumuam
>     dois
>     doisodisodisodi sodisoidosidos dosidosiodisodi s
>     tres
>     trstsrter strestersteserstrestrestrtesrets
> 
> Abraço!
> 
> Breno.
> --
> 
> 
> 
> 
> 2008/9/26 Julio C. Neves <address@hidden>:
> > Fala Fabiano,
> > Cara, adorei a sua resposta. Muito inteligente!!!!
> > --
> > Abraços,
> > Julio
> > *Em setembro estarei dando um treinamento
> > Shell em São Paulo (em 2 fins de semana).
> > Mais informações: www.4linux.com.br
> > Tel: (11) 2125-4747
> > *
> > 2008/9/26 Fabiano Caixeta Duarte <address@hidden>
> >
> >> 2008/9/26 André Saunite <address@hidden <saunite%40gmail.com>>
> >
> >>
> >>
> >> > Olá,
> >> >
> >> > Já tentou assim?
> >> >
> >> > cat $(cat lista.txt)
> >> >
> >> > Abs,
> >> > André Saunite
> >> >
> >> > 2008/9/26 allan_hkrs <address@hidden<allan_hkrs%40yahoo.com.br>
> >> >:
> >> > > Estou com uma duvida besta, porem nao arranjo solução para a mesma,
> >> > > ja pesquisei e nao achei nada relacionado, alguem sabe como posso
> >> > > passar uma valor de um txt ou de um pipe direto para uma linha de
> >> > > comando? Vou dar um exemplo do que estou querendo fazer. Supondo que
> >> > > eu tenha um arquivo lista.txt com o conteudo:
> >> > >
> >> > > juliosoares.txt
> >> > > robertosoares.txt
> >> > > carlosdesouza.txt
> >> > > alvaro.txt
> >> > > augustosoares.txt
> >> > >
> >> > > digamos que eu queira fazer um cat nos arquivos nessa ordem.. Como eu
> >> > > posso "passar" o valor para a linha de comando sem digitar linha por
> >> > > linha? Por exemplo:
> >> > >
> >> > > cat juliosoares.txt robertosoares.txt augustosoares.txt
> >> > >
> >> > > Ao inves de digitar 1 por 1, faria um grep e passaria o valor da
> >> > > saida padrao para a linha de comando, sem opções de cada programa, de
> >> > > forma generalizada, entenderam? Quem puder ajudar...
> >> > >
> >> > > Allan
> >> >
> >>
> >> A mesma solução, mas com uma pequena variação ;)
> >>
> >> cat $(<lista.txt)
> >>
> >> --
> >> Fabiano Caixeta Duarte
> >> Especialista em Redes de Computadores
> >> Linux User #195299
> >> Ribeirão Preto - SP
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >
> > --
> > Abraços,
> > Julio
> > Em setembro estarei dando um treinamento
> > Shell em São Paulo (em 2 fins de semana).
> > Mais informações: www.4linux.com.br
> > Tel: (11) 2125-4747
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> 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
> 
_______________________________________________________________________________


reply via email to

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