O primeiro problema é que você tem um espaço depois do =
:
TEMP= grep -o [1-9][0-9]\.[0-9] /tmp/temp.txt
Isso está errado e quebra seu roteiro. A próxima questão é que você está atribuindo os próprios comandos, como strings, às variáveis e não à sua saída:
$ foo=date
$ echo $foo
date
Para executar o comando e salvar sua saída em uma variável, você precisa usar $(command)
ou 'command'
:
$ foo=$(date)
$ echo $foo
Mon May 25 19:09:11 EEST 2015
Você também tem vários outros pedaços que podem ser melhorados. Tente isso:
#!/usr/bin/env bash
vcgencmd measure_temp > /tmp/temp.txt
## Avoid using UPPER CASE variable names since they
## can conflict with environmental variables.
temp=$(grep -o "[1-9][0-9]\.[0-9]" /tmp/temp.txt)
date=$(date +"%Y-%m-%d %H:%M")
## No need for another variable
printf "%s;%s\n" "$date" "$temp" >> /home/pi/temp_hist.csv