
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.