Não obstante as melhores soluções gerais, eis o motivo pelo qual ele falhou neste script:
FINDOPTS="-type f -mtime +3 -exec rm -rf {} \;"
^
O parâmetro find
está aguardando é o caractere ;
. Como ;
é (não por acaso) também o delimitador de fim de comando do shell, ele deve ser escapado em um comando shell, portanto, geralmente digitado \;
. Se agora você colocar este caractere em uma variável, ele nunca será avaliado pelo shell como um delimitador. Assim, o musn't deve ser salvo.
Reproduzindo o erro sem variável:
$ find /etc -exec ls "\;"
find: missing argument to '-exec'
Portanto, basta substituir a string por:
FINDOPTS="-type f -mtime +3 -exec rm -rf {} ;"