Один вариант :сказать case
искать 0
, и в этом случае :ничего не делать; иначе , выполните команду:
case X in
(0) : ## do nothing
;;
(*) truncate...
;;
esac
Другой вариант :указать case
искать любую цифру, отличную от -ноль:
case X in
([123456789]) truncate...
esac
... но вместо того, чтобы сопоставлять числа с case
, я бы использовалtest
:
if [ "$(grep -c ERROR /root/test/wayfile.log)" -gt 0 ]
then
truncate...
fi
Я упростил grep... | wc -w
до grep -c
, который запрашивает grep
для подсчета вместо привлечения wc
.
Далее, поскольку вас на самом деле просто интересует, существует ли вообще слово ERROR
в файле,вы можете просто спросить grep
, есть ли он там:
if grep -F -q ERROR /root/test/wayfile.log
then
truncate...
fi
Флаг -F
сообщает grep, что искомый текст является простым ("Фиксированный" )текст --без регулярных выражений; флаг -q
указывает grep быть "тихим" --не считать и не выводить совпадающие строки, просто установить его статус выхода в зависимости от того, нашел ли он вообще искомый текст (или нет ). Успешный код завершения (, равный 0 ), указывает, что искомый текст был найден в файле хотя бы один раз; сбой означает, что искомый текст вообще не был найден в файле.
да, вы можете сделать это с помощью jffs2dump
. он, вероятно, предустановлен в вашем Linux, если нет, вы можете найти его здесь:https://github.com/project-magpie/jffs2dump