Você leu o arquivo três vezes (!) - desde que provavelmente haja armazenamento em cache de arquivos fornecido pelo SO que o torna um pouco menos ruim (o pior caso: seu script lê três coisas diferentes conforme o arquivo muda entre as leituras), mas pode seja mais sensato ler o conteúdo do arquivo, uma vez, sem forçar o cat
, e depois usar os testes do shell nesses conteúdos.
#!/usr/bin/env bash
# look ma no cat!
TMP_FILE_CONTENTS=$(<"$1")
if [[ -n "$TMP_FILE_CONTENTS" ]]; then
if [[ "$TMP_FILE_CONTENTS" -gt 42 ]]; then
echo more
else
echo less
fi
else
echo empty
fi
que para mim produz algo como
$ :> empty
$ echo 5 > small
$ echo 999999 > big
$ ./reed empty
empty
$ ./reed small
less
$ ./reed big
more
$