Error con script que llama a otro script con shell diferente

Error con script que llama a otro script con shell diferente

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 wcsujeto a split+glob (104 en su caso) y redirige su salida a un archivo llamado 55en 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.test104wc -l[

O con sintaxis ksh:

if (($(wc -l < "$LOGFILE") +0 > 55)); then...

(Esto +0se aplica en el caso en el que el wc -l < "$LOGFILE"comando no produce resultados, como cuando $LOGFILEno se puede abrir para leer).

(Es posible que también desee eliminar ese 55archivo vacío creado anteriormente por su secuencia de comandos).

información relacionada