Atribuindo valor stdout a uma variável

0

Então eu estou tentando fazer um script sh onde eu coloquei um valor que recebo de um comando, em uma variável, neste caso n, mas não tenho idéia do que estou fazendo, e isso aqui obviamente não não trabalhe lol:

  1 n=0
  2 cat test | grep -cE '[0-9]{1,4}' > $n
  3 echo "there were $n lines in test" > rtest1

Faz um arquivo rtest1 que diz "havia 0 linhas no teste"

Teste é um arquivo que tem 10 linhas, a propósito.

Então, como alguém atribui um valor de stdout a uma variável no shell script? : D

    
por iamAguest 09.08.2018 / 10:00

1 resposta

0

O que você quer é chamado de substituição de comando :

file=./path/to/some/file
n="$(grep -cE '[0-9]{1,4}' < "$file")"
echo "there were $n matching lines in $file"

É claro que você não precisa das aspas na tarefa, apenas n=$(...) faria. Mas, em geral, você quer as aspas ao redor da substituição do comando. Observe também que ele come novas linhas.

Veja também:

por 09.08.2018 / 10:03