Verifique a linha #! / bin / bash (a linha shebang). Esta é realmente a primeira linha? Talvez o arquivo comece com mais alguns comentários, a linha shebang será ignorada e o script executado com o shell atual (linha de comando pode ser bash, crontab será / bin / sh) O toque funcionará, a linha com o KEYWORDS falhará.
O comando depois! deve ser válido. Quando o arquivo é editado no Windows, a linha pode terminar com \ r \ n. Quando a linha terminar com um espaço, o intérprete estará procurando por "bash".
Você disse que iniciou o programa como ./thescriptname.sh. Neste caso, um shebang inválido será notado também. Mas talvez você tenha começado com
. ./thescriptname.sh
Quando você inicia o arquivo com um ponto, a linha shebang é ignorada. Isso explicaria porque funciona usando a linha de comando.
O crontab forneceu alguma saída? Talvez sua conta Unix tenha um e-mail. Caso contrário, altere o crontab e redirecione o stdout e o stderr para um arquivo tmp:
* * * * * /bin/sh /root/miami.sh > /tmp/miami.out 2>&1