2

Я пытаюсь собрать простой скрипт, который будет сканировать мой домашний каталог с помощью clamscan и выдаст мне предупреждение, если будут обнаружены какие-либо вирусы. То, что я до сих пор это:

#! /usr/bin/env bash

clamscan -l ~/.ClamScan/$(date +"%a%b%d") -ir /home
RETVAL=$?
[ $RETVAL -eq 0 ] && notify-send 'clamscan finished. No viruses found'
[ $RETVAL -eq 1 ] && notify-send 'clamscan found a virus' && touch ~/Desktop/VirusFound
[ $RETVAL -eq 2 ] && notify-send 'clamscan encountered errors. Check the logs' && touch ~/Desktop/ClamscanError

find ~/.ClamScan/* -mtime +7 -exec rm {} \;

Тем не менее, я не уверен в нескольких вещах:

Я всегда опасаюсь использовать rm - насколько я могу судить, команда find я получаю, должна удалять любые файлы журнала, возраст которых превышает неделю.

Я также не совсем уверен, как работает тестирование возвращаемого значения - у меня есть руководство, которое кратко описывает bash, в котором говорится, что означает $? "соответствует одному символу", и я не совсем уверен, как это получить возвращаемое значение. Должен ли я использовать -eq или = для проверки возвращаемого значения? Из того, что я могу сказать, -eq проверяет строки и = проверяет цифры, но я не уверен, какой тип возвращаемого значения.

1 ответ1

1

Если вам нужна дополнительная информация о bash, вы можете набрать man bash чтобы прочитать онлайн-руководство.

-eq - правильный оператор для проверки, равны ли числа.

? (без знака доллара) "Соответствует одному символу" при сопоставлении с шаблоном имени файла. $? это специальный параметр, который "расширяется до состояния последнего выполненного переднего конвейера" (для ваших целей "передний план конвейера" просто означает команду)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .