Grep Execução do comando dentro de um loop dá erro

0

Eu sou novo em scripts de shell. Eu estou tentando criar um pequeno programa para contar o não de linhas em um conjunto de arquivos de log com base em algum tempo fornecido pelo usuário.Estou atualmente na última etapa e devido a algum motivo quando executo o programa ele falha com o erro abaixo      grep: |: Nenhum arquivo ou diretório     grep: wc: Nenhum arquivo ou diretório desse tipo

A execução acontece na linha 6 no código abaixo. A linha 7 mostra um comando de amostra que estou tentando executar. Se eu comentar a linha 6 e descomentar a linha 7, ela será executada. Eu poderia estar perdendo algo simples. Agradeço sua ajuda. Os valores dessas variáveis são fornecidos abaixo

fileName="'summary_ * | wc -l" comando="grep" comm = ive > 20161215110

1 for (( z=0; z<($interval/10); z++ ))
2 do
3       comm=$tempCommand$count
4       let "count = $count + 1"                                
5       #echo "$command$comm$fileName"
6       totalCount='$command$comm$fileName'
7       #totalCount='grep 'ived>20161215110' summary_* | wc -l'
8       echo $totalCount
9 done
    
por Shawn 15.12.2016 / 21:16

1 resposta

1

O shell reconhece o metacaractere | no início da análise. Ao expandir um valor variável, já é tarde demais, então | se comporta como uma barra vertical literal, ou seja, como se você executasse

grep 'ived>20161215110' summary_* \| wc -l

Você pode usar uma função em vez de uma variável.

    
por 15.12.2016 / 21:21