Seu código parece um exemplo inteiramente justificado de usar tempfiles para mim. Eu ficaria: fique com essa abordagem. A única coisa que realmente precisa ser alterada é a maneira como você cria o arquivo temporário. Use algo como
TMP=$(tempfile)
ou
TMP=$(mktemp)
ou pelo menos
TMP=/tmp/myscript_$$
Dessa forma, você não permitirá que o nome seja facilmente previsto (segurança) e a interferência de regras entre várias instâncias do script seja executada ao mesmo tempo.