La ejecución del comando Grep dentro de un bucle da error

La ejecución del comando Grep dentro de un bucle da error

Estoy intentando crear un pequeño programa para contar el número de líneas en un conjunto de archivos de registro según un período de tiempo proporcionado por el usuario. Actualmente estoy en el último paso y, por alguna razón, cuando ejecuto el programa, falla con el siguiente error. grep: |: No existe tal archivo o directorio grep: wc: No existe tal archivo o directorio

La ejecución ocurre en la línea 6 del código siguiente. La línea 7 muestra un comando de muestra que estoy intentando ejecutar. Si comento la línea 6 y descomento la línea 7, se ejecuta. Puede que me esté perdiendo algo simple. Aprecio tu ayuda. Los valores de esas variables se dan a continuación.

fileName="' resumen_* | wc -l" comando="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

Respuesta1

El shell reconoce el |metacarácter desde el comienzo del análisis. Al expandir el valor de una variable, ya es demasiado tarde, por lo que |se comporta como una barra vertical literal, es decir, como si ejecutaras

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

Puedes usar una función en lugar de una variable.

información relacionada