Em geral, precisar de interação com o usuário é uma ideia muito ruim. Isso torna impossível automatizar seu script e torna muito difícil o uso dos usuários, já que eles precisam digitar manualmente as coisas em um ambiente que não permite a conclusão da tabulação.
Como o @maulinglawns já explicou porque o seu script estava falhando, darei a você uma maneira mais simples de fazê-lo isso não requer que seus usuários digitem informações com cuidado:
#!/usr/bin/env sh
days="$1"
nameoffile="$2"
nameofarchive="$3"
find -name "$nameoffile" -mtime -"$days" | tar -cvf $nameofarchive".tar.gz -T -
Em seguida, para localizar os arquivos com o nome foo.txt
, modificados nos últimos 3 dias e arquivá-los em bar.tar.gz ', você executaria:
script.sh 3 foo.txt bar
Você também pode adicionar algumas verificações de erros simples para garantir que o script seja sempre executado com o número correto de parâmetros:
#!/usr/bin/env sh
if [ $# -ne 3 ]; then
echo "You need to enter three arguments"
exit 1
fi
days="$1"
nameoffile="$2"
nameofarchive="$3"
find -name "$nameoffile" -mtime -"$days" | tar -cvf $nameofarchive".tar.gz -T -