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:49:40 -0300
User-agent: Mutt/1.4.2.3i

se entendi de qualquer forma seria necessário executar o mycat enquanto
exister parâmetros.

  $ xargs -i ./mycat {} < lista


On Tue, Sep 30, 2008 at 10:30:38AM -0300, Breno Moiana wrote:
> Na verdade, o script é só uma demonstracao, estou pensando se existe
> uma solução genérica que nao involva tocar no codigo do script.
> Suponha, por exemplo, que seja um script complexo, legado, estilo
> castelo de cartas, ou que você simplesmente não tenha acesso de
> escrita.
> 
> O ponto aqui é que o comando dentro do script, ao invés de "cat",
> seria algo que não suporta multiplos parametros.
> 
> Se não der pra substituir o 'for' por algo mais elegante, não tem
> problema, a dúvida é saber se existe algum truque na manga de alguém
> por aí :)
> 
> abraço!
> 
> Breno.
> --
> 
> 
> 
> 
> 2008/9/30 jimmy <address@hidden>:
> > 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
> >>
> > __________________________________________________________
> > 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> 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]