
Estou tentando criar um pequeno programa para contar o número de linhas em um conjunto de arquivos de log com base em algum período de tempo fornecido pelo usuário. Atualmente estou na última etapa e por algum motivo, quando executo o programa, ele falha com o erro abaixo grep: |: Arquivo ou diretório inexistente grep: wc: Arquivo ou diretório inexistente
A execução acontece na linha 6 do código abaixo. A linha 7 mostra um exemplo de comando que estou tentando executar. Se eu comentar a linha 6 e descomentar a linha 7, ele será executado. Posso estar faltando algo simples. Agradeço sua ajuda. Os valores dessas variáveis são fornecidos abaixo
fileName="' summary_* | wc -l" command="grep '" comm=ived>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
Responder1
O shell reconhece o |
metacaractere logo no início da análise. Ao expandir o valor de uma variável, já é tarde demais, então |
se comporta como uma barra vertical literal, ou seja, como se você tivesse executado
grep 'ived>20161215110' summary_* \| wc -l
Você pode usar uma função em vez de uma variável.