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