Leia a saída de um comando em uma variável [duplicata]

1

Estou fazendo um script, mas sou totalmente novo e me perdi.

Eu fiz este código

cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l

que funciona muito bem, mas eu preciso ler a saída wc -l em uma variável para que eu possa fazer uma média depois disso com outro comando bash. Em seguida, imprima essa média e torne-a legível para o usuário.

    
por baccksash 10.07.2013 / 17:51

2 respostas

3

Para responder à sua pergunta direta, você precisa agrupar seu código em uma sequência $() para que sua saída possa ser atribuída a uma variável. Assim:

x=$(your_code_goes_here)

Dito isto, tenho algumas notas sobre o seu one-liner:

  • Por que o principal cat * ? Este parece ser um uso inútil do gato . Você pode fazer diretamente

    grep pattern *
    

    que ainda pode não ser uma boa ideia, já que * corresponderia a todos os arquivos e subdiretórios do diretório atual e grep emitirá um aviso se você solicitar a pesquisa em um diretório sem fornecer o% co_de Opção% (recursiva). Usar o -r pode ou não ser adequado dependendo do seu caso de uso.

  • Não sei ao certo para que * no final: wc -l não imprime sua saída em várias linhas, então cut (contagem do número de linhas) sempre retornaria 1 .

por 10.07.2013 / 18:00
0

Você pode usar esta sintaxe:

var=$(cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l)
    
por 10.07.2013 / 17:58