Seu script poderia fazer apenas
env | grep -E '^SMS_.*_(NUMBER|TEXT)=' >>smslog.dat
Alternativamente,
i=1
while [ "$i" -le "$SMS_MESSAGES" ]; do
printf 'Message %d number = "%s"\n' "$i" "$( eval printf '%s' "\$SMS_${i}_NUMBER" )"
printf 'Message %d text = "%s"\n' "$i" "$( eval printf '%s' "\$SMS_${i}_TEXT" )"
i=$(( i + 1 ))
done >>smslog.dat
Para garantir que você escreva para smslog.dat
no local correto, use cd
em seu script no diretório correto ou especifique smslog.dat
com seu caminho completo.