
Tengo un script que se ejecuta en sh Shell, este script funciona bien. Pero agregué un script escrito en ksh shell (en el encabezado del script hay #!/bin/ksh) pero cada vez aparece el error
./monitor_FMn2.sh[19]: 104: not found
Que cada vez cambia la segunda línea que produce el error. La línea 19 es la línea donde llamo al script ksh.
if `wc -l < $LOGFILE` > 55;
then
logcycle $LOGFILE
fi
ciclo de registroes el script ksh.
Respuesta1
`wc -l < $LOGFILE` > 55
Ejecuta el comando cuyo nombre es la salida de wc
sujeto a split+glob (104 en su caso) y redirige su salida a un archivo llamado 55
en el directorio actual. Como no hay ningún comando llamado 104 en su sistema, aparece ese error.
Presumiblemente, querías escribir:
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
Es decir, ejecute el comando [
también conocido como (en lugar de ) para probar que la salida interpretada como una expresión aritmética (por lo que no se queja de los espacios iniciales, si los hay) es mayor que 55.test
104
wc -l
[
O con sintaxis ksh:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(Esto +0
se aplica en el caso en el que el wc -l < "$LOGFILE"
comando no produce resultados, como cuando $LOGFILE
no se puede abrir para leer).
(Es posible que también desee eliminar ese 55
archivo vacío creado anteriormente por su secuencia de comandos).