Puedes usar tput cup 0 0
para enviar el cursor a la parte superior izquierda de la pantalla. clear
una vez.
#!/bin/bash
clear
while sleep 1; do
tput cup 0 0
printf "%21s %6d \n" \
"Célula calibrada: " $(npe ?AI1) \
"Anemómetro: " $(npe ?AI2) \
"Célula temperatura: " $(npe ?AI3) \
"Célula temperatura: " $(npe ?AI4)
done
Puede ser complicado implementar una solución en tiempo real en bash.
Hay muchas formas de ejecutar un script una vez en X segundos, puede usar watch
.Supongo que ya tienes myScript.sh
disponible. Reemplace X con la cantidad de segundos que necesita.
-
watch -n X ./myScript.sh
-
while sleep X; do ./myScript.sh; done
actualización para emular el reloj, es posible que desee borrar la pantalla entre iteraciones. dentro del script se verá de esta manera:
while sleep X; do clear; command1; command2; done
-
agregue una de las opciones anteriores al script en sí.
Supongo que el parpadeo se debe a que sus comandos tardan un momento en devolver sus valores. Esta es mi solución habitual:
cmds(){
echo "Célula calibrada: " $(npe ?AI1);
echo "Anemómetro: " $(npe ?AI2);
echo "Célula temperatura: " $(npe ?AI3);
echo "Célula temperatura: " $(npe ?AI4);
}
while true; do
out="$(cmds)"
clear
echo "$out"
sleep 1
done
La idea es que despejemos la pantalla en el último momento posible.