variable script read from bash shell pipe bash-function

from - script bash read



leer stdin en funciĆ³n en script bash (3)

Llame a sed directamente. Eso es.

function filter-general { sed <bla-blah-blah> }

Tengo un conjunto de funciones de bash que generan información:

  • find-modelname-in-epson-ppds
  • find-modelname-in-samsung-ppds
  • find-modelname-in-hp-ppds
  • etc ...

He estado escribiendo funciones que leen la salida y la filtran:

function filter-epson { find-modelname-in-epson-ppds | sed <bla-blah-blah> } function filter-hp { find-modelname-in-hp-ppds | sed <the same bla-blah-blah> } etc ...

Pero pensé que sería mejor hacer algo como esto:

function filter-general { (somehow get input) | sed <bla-blah-blah> }

y luego llama a otras funciones de alto nivel:

function high-level-func { # outputs filtered information find-modelname-in-hp/epson/...-ppds | filter-general }

¿Cómo puedo lograr eso con las mejores prácticas de bash?


Para ser dolorosamente explícito de que estoy saliendo de stdin, a veces escribo

cat - | ...


Si la pregunta es How do I pass stdin to a bash function? , entonces la respuesta es:

Las funciones de Shellscript toman stdin de manera ordinaria, como si fueran comandos o programas. :)

input.txt:

HELLO WORLD HELLO BOB NO MATCH

test.sh:

#!/bin/sh myfunction() { grep HELLO } cat input.txt | myfunction

Salida:

hobbes@metalbaby:~/scratch$ ./test.sh HELLO WORLD HELLO BOB

Tenga en cuenta que los argumentos de línea de comandos TAMBIÉN se manejan de la manera ordinaria, como esta:

test2.sh:

#!/bin/sh myfunction() { grep "$1" } cat input.txt | myfunction BOB

Salida:

hobbes@metalbaby:~/scratch/$ ./test2.sh HELLO BOB