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: Breno Moiana
Subject: Re: [shell-script] Dúvida besta porem persistente
Date: Tue, 30 Sep 2008 10:30:38 -0300

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
>>
> __________________________________________________________
> 


reply via email to

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