eu devo ta maluco, mas... $ ./mycat.sh "$(<lista)"
? -- Flavio do Carmo Junior aka waKKu 2008/9/30 Breno Moiana <[EMAIL PROTECTED]>: > 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 <[EMAIL PROTECTED]>: > >> 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 <[EMAIL PROTECTED]>: >>> > 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 <[EMAIL PROTECTED]> >>> > >>> >> 2008/9/26 André Saunite <[EMAIL PROTECTED] <saunite%40gmail.com>> >>> > >>> >> >>> >> >>> >> > Olá, >>> >> > >>> >> > Já tentou assim? >>> >> > >>> >> > cat $(cat lista.txt) >>> >> > >>> >> > Abs, >>> >> > André Saunite >>> >> > >>> >> > 2008/9/26 allan_hkrs >>> >> > <[EMAIL PROTECTED]<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: [EMAIL PROTECTED] >>> ---------------------------------------------------------- >>> 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 >>> >> __________________________________________________________ >> >
