Ошибка скрипта, который вызывает другой скрипт с другой оболочкой

Ошибка скрипта, который вызывает другой скрипт с другой оболочкой

У меня есть скрипт, который работает в оболочке sh, этот скрипт работает нормально. Но я добавил один скрипт, написанный в оболочке ksh (в заголовке скрипта есть #!/bin/ksh), но каждый раз получаю ошибку

./monitor_FMn2.sh[19]: 104:  not found

Который каждый раз меняет вторую строку, которая приводит к ошибке. 19-я строка - это строка, где я вызываю скрипт ksh.

if `wc -l < $LOGFILE` > 55;
    then
    logcycle $LOGFILE
fi

логциклэто скрипт ksh.

решение1

`wc -l < $LOGFILE` > 55

Запускает команду, имя которой является выводом wcсубъекта split+glob (104 в вашем случае) и перенаправляет ее вывод в файл с именем 55в текущем каталоге. Поскольку в вашей системе нет команды с именем 104, вы получаете эту ошибку.

Вероятно, вы хотели написать:

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

То есть запустите команду [aka test(вместо 104), чтобы проверить, что вывод, wc -lинтерпретируемый как арифметическое выражение (чтобы [не жаловаться на начальные пробелы, если таковые имеются), больше 55.

Или с синтаксисом ksh:

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

( +0чтобы охватить случай, когда wc -l < "$LOGFILE"команда не выводит никаких данных, например, когда файл $LOGFILEневозможно открыть для чтения).

(Вы также можете удалить пустой 55файл, созданный ранее вашим скриптом).

Связанный контент