Como fazer meus Scripts usarem pipes também ? [RESOLVIDO]

1. Como fazer meus Scripts usarem pipes também ? [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 20/08/2011 - 11:27h

Olá scripteiros ;)

Pesquisei nos foruns da comunidade e também procurei ler vários artigos sobre passagens de parâmetros e substituições de processos, mas não encontrei algo especificamente para a construção e utilização de pipes entre nossos próprios scripts.

Minha dúvida.

1 - MinhasNotas.sh (listas de 3 a 5 colunas) Depende dos parametros. Pode gerar um arquivo de saída opcional.
2 - Classificados.sh (faz ordenações com base em dados recebidos e formata)

Se eles fossem igual aos comandos ls, grep e awk, poderia passar um pipe entre eles, exemplo:

ls -l *.cl | MinhasNotas.sh -a -c | Classificados.sh -3 -o | sed 's/classe/ //g'

tradução:
- listando arquivos de um diretório.
- Passando para o script MinhasNotas.sh
- filtrando só aprovados.
- Que se encontram com média c
- Passando o resultado para o Classificados.sh
- Irá gerar novo formato com 3 colunas.
- Gerando saida por linha -o sem detalhes e nem totalizadores.
- Passa para o sed retirar o nome classe.
- O resultado serão nomes,notas e turmas.

Na verdade eu consigo fazer a primeira parte. Recebe os dados do ls. Não funciona a passagem do próximo pipe, nada acontece.
Tem algum macete pra incluir dentro dos Scripts que permita o uso de pipes ?

Se resolver, muitos programas nem precisam ser feitos e poderia cruzar várias necessidades que nem foram previstas.
Qualquer ajuda para iniciar o caminho das pedras é bem vinda.

@GA_Tux - recuperando a frase favorita: " "Quem pergunta é bobo por 5 minutos... Quem não pergunta é bobo para sempre!" (Proverbio chinês)


oops: Fontes de pesquisas.
http://www.vivaolinux.com.br/dica/Pipes-no-Linux
http://www.vivaolinux.com.br/topico/Comandos/pipe-e-cp
http://www.vivaolinux.com.br/dica/Named-Pipe-(First-in-First-out)-FIFO
http://www.vivaolinux.com.br/dica/Usando-o-pipe
http://www.vivaolinux.com.br/script/Dicas-e-explicacoes-de-comandos-do-Linux-rapidos-e-reeditaveis
http://www.vivaolinux.com.br/artigo/Nagios-Falante?pagina=4
http://www.vivaolinux.com.br/topico/Shell-Script/receber-info-de-um-sokcet
http://www.vivaolinux.com.br/artigo/Introducao-ao-uso-de-Shell-Script?pagina=6
http://www.vivaolinux.com.br/script/Grep-em-loop-infinito
http://www.vivaolinux.com.br/topico/Shell-Script/Fazer-Script-Shell-utilizar-100-de-CPU?num_por_pagi...
http://www.vivaolinux.com.br/artigo/Sinais-em-Linux





  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 20/08/2011 - 11:46h

Li rapidamente, mas a lógica seria a seguinte.

Seu script tem que terminar enviando alguma coisa para a saída padrão, ai você pode usar o pipe para passar para outro comando ou script.

Exemplo:

[script meu_nome.sh]
#!/bin/bash
#......vários códigos malucos
echo "Raimundo Portela"
[fim do script]

ai chama ele:

$ ./meu_nome.sh | grep 'Portela'
Raimundo Portela

Esse é o conceito básico, precisando estamos ai :-)

3. Re: Como fazer meus Scripts usarem pipes também ? [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 20/08/2011 - 11:48h

Detalhe, seu script não pode gerar sujeira, apenas deve retornar algo caso dê certo, senão não retorna nada mesmo.

É um dos postulados básicos de programação do UNIX :-)




4. Re: Como fazer meus Scripts usarem pipes também ? [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 20/08/2011 - 14:09h

Sua resposta funcionou :)
---------
#!/bin/bash
# lista.sh
#......vários códigos malucos
echo "Raimundo Portela" "nome" "classe"
echo "Geraldo Albuquerque" "nome" "classe"
---------
#!/bin/bash
#......vários códigos malucos
# ordem.sh
sort $1
---------

comandos:
---------
[14:08 - 0.00]
[administrador@ga-tux 12] sh-pra-testar $> ./lista.sh |grep classe | ./ordem.sh

#>Geraldo Albuquerque nome classe
#>Raimundo Portela nome classe
---------

Os problemas estão no meu código. Voltando pra prancheta :)



5. Re: Como fazer meus Scripts usarem pipes também ? [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 29/03/2012 - 11:28h

Alterar código que por preguiça não se documenta como deve rende muitas dores de cabeça.
E depois o pessoal ainda fala que eu escrevo muito kkk. Nem lembrava que já tinha postado esta dúvida aqui.
Revendo tudo novamente.