在 Ubuntu 上运行 clamscan 的 Bash 脚本-如何正确使用返回值?

在 Ubuntu 上运行 clamscan 的 Bash 脚本-如何正确使用返回值?

我正在尝试编写一个简单的脚本,该脚本将扫描我的主目录,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

如果您想了解有关 bash 的更多信息,您可以键入man bash以阅读在线手册。

-eq是测试数字是否相等的正确运算符。

?(没有美元符号)在进行文件名模式匹配时“匹配单个字符”。$?是一个特殊参数,它“扩展到最近执行的前台管道的状态”(就您的目的而言,“前台管道”仅表示命令)

相关内容