Múltipla atribuição de variável de diferentes partes de um pipeline de comando

3

Digamos que eu tenha 2 variáveis que estou atribuindo da seguinte maneira:

psaux='ps aux | grep someProcessName'
pscount='ps aux | grep someProcessName | wc -l'

Eu gostaria de combinar as atribuições em uma linha, para que a parte "ps aux | grep someProcessName" seja executada apenas uma vez, então eu sei que não há possibilidade de que algo possa mudar entre duas execuções.

O mais próximo que posso chegar é o seguinte pseudocódigo grotesco:

read psaux pscount <<<$(ps aux | grep someProcessName | tee &1 | wc -l)
    
por snowcloned 13.05.2016 / 04:44

1 resposta

2

Apenas reutilize a primeira variável:

psaux="$( ps aux | grep "someProcessName" )"
pscount="$( printf '%s\n' "$psaux" | wc -l )"

O comando grep é chamado apenas uma vez.
O resultado dessa chamada é reutilizado para contar as linhas.

    
por 13.05.2016 / 04:55