Chamando uma função dentro de um pipe

0

Eu tenho um script usando um pipe bastante longo muitas vezes. O meio de cada pipe é a mesma cadeia de comandos. Apenas o começo e o fim se desfazem o tempo todo.

Different-command-1 \
 | command A \
 | command B \
 | command C \
 | diff-cmd-2

Existe uma maneira de chamar esses comandos como uma função dentro do pipe? Como:

same-commands() {
    | command A \
    | command B \
    | command C \
}

Different-command-1 \
 same-commands
 | diff-cmd-2

Different-command-3 \
 same-commands
 | diff-cmd-4

isso no meu caso salvaria muitas linhas no meu script, mas não consigo entender como isso poderia funcionar.

    
por nath 07.12.2017 / 20:22

1 resposta

1

Os comandos em uma função são executados com o mesmo stdin e stdout que a própria função, então podemos apenas colocar um pipeline em uma função, e manter a função em outro pipeline, como se fosse qualquer outro comando:

func() { 
    tr a x | 
    tr b x
}
echo abc | func | tr c x

Isto imprime xxx .

    
por 07.12.2017 / 20:55