Sim, você precisa usar a sintaxe sh . Você pode encontrar a especificação para o padrão portátil sh sintaxe lá .
Nesse caso, você deseja [ "$((i+=1))" -le 29 ] , ou se seu sh for baseado em uma versão antiga de ash que ainda não suportava o conjunto completo de operadores aritméticos padrão, use [ "$i" -le 28 ] ...; i=$(($i + 1)) .
Uma nota de aviso: processar um diretório gravável do mundo como /var/tmp sob cron é como abrir uma lata de segurança worm.
Você precisa tratar os nomes dos arquivos e o tipo deles como não confiáveis e extremamente sujos.
Seu $(/bin/ls -r /var/tmp/*) em particular é falso, pois faz muitas suposições sobre quais caracteres os nomes de arquivos podem conter e supõe que nenhum deles são diretórios ou links simbólicos para diretórios.