Você tem:
echo -ne "..."\r
O que significa:
-
-n
: não imprime uma nova linha no final, portanto, qualquer comando subsequente é iniciado na mesma linha -
-e
: interprete sequências de escape de barra invertida, portanto: -
\r
se torna retorno de carro, e o próximo comando inicia a saída do início da mesma linha
Assim, todos os seus comandos são impressos na mesma linha, cada um substituindo o anterior e somente o último é visível. Remova o -ne
e o \r
:
echo " CORE 0 (MHz): $cpu0_cur (min $cpu0_min, max $cpu0_max) TEMPERATURE: $tempr MEMORY (MHz): $ddr_cur (min $ddr_min, max $ddr_max) "
Além disso, você não precisa de todas essas variáveis:
while true; do
tempr=$(cat /sys/devices/virtual/hwmon/hwmon1/temp1_input)
## retrieves ddr info
ddr_cur=$(( $(cat /sys/devices/platform/sunxi-ddrfreq/devfreq/sunxi-ddrfreq/cur_freq) / 1000 ))
ddr_max=$(( $(cat /sys/devices/platform/sunxi-ddrfreq/devfreq/sunxi-ddrfreq/max_freq) / 1000 ))
ddr_min=$(( $(cat /sys/devices/platform/sunxi-ddrfreq/devfreq/sunxi-ddrfreq/min_freq) / 1000 ))
for i in {0..3}; do
## retrieves core info
cur=$(( $(cat /sys/devices/system/cpu/cpu$i/cpufreq/scaling_cur_freq) / 1000 ))
max=$(( $(cat /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_freq) / 1000 ))
min=$(( $(cat /sys/devices/system/cpu/cpu$i/cpufreq/scaling_min_freq) / 1000 ))
## retrieves system temp
printf '\tCORE %d (MHz): %4s (min %4s, max %4s) TEMPERATURE: %4s MEMORY (MHz): %4s(min %4s, max %4s)\n' $i "$cur" "$min" "$max" "$tempr" "$ddr_cur" "$ddr_min" "$ddr_max"
done
sleep 0.2
done