Script Bash para executar um clamscan no Ubuntu- como usar corretamente os valores de retorno?

2

Estou tentando montar um script simples que verificará meu diretório inicial com clamscan e me avisará se algum vírus foi encontrado. O que eu tenho até agora é:

#! /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 {} \;

No entanto, não tenho certeza sobre algumas coisas:

Eu sempre desconfio de usar rm - até onde eu sei, o comando find que eu tenho deve estar excluindo qualquer arquivo de log que tenha mais de uma semana.

Eu também não sei ao certo como o teste de valor de retorno funciona - eu tenho um manual que cobre brevemente o bash, que diz que o significado de $? é "combine um caractere", e eu não sou inteiramente Certifique-se de como isso agarra o valor de retorno. Devo estar usando -eq ou = para testar o valor de retorno? Pelo que posso dizer, -eq testa cadeias e = testa numerais, mas não sei qual é o tipo do valor de retorno.

    
por Marius 31.03.2012 / 06:11

1 resposta

1

Se quiser mais informações sobre o bash, você pode digitar man bash para ler o manual on-line.

-eq é o operador correto para testar se os números são iguais.

? (sem o cifrão) "Corresponde a um único caractere" ao fazer correspondência de padrão de nome de arquivo. $? é um parâmetro especial que "se expande para o status do pipeline de primeiro plano executado mais recentemente" (para seus fins, "pipeline de primeiro plano" significa apenas comando)

    
por 31.03.2012 / 06:31

Tags