
У меня есть скрипт, который работает в оболочке 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
файл, созданный ранее вашим скриптом).