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

eu devo ta maluco, mas...

$ ./mycat.sh "$(<lista)"

?

--

Flavio do Carmo Junior aka waKKu

2008/9/30 Breno Moiana <address@hidden>:
> 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]