Vous pouvez utiliser tput cup 0 0
pour envoyer le curseur en haut à gauche de l'écran. clear
une fois.
#!/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
Il peut être difficile d'implémenter une solution en temps réel dans bash.
Il existe de nombreuses façons d'exécuter un script une fois toutes les X secondes, vous pouvez utiliser watch
.Je suppose que vous avez déjà myScript.sh
disponible. Remplacez X par le nombre de secondes dont vous avez besoin.
-
watch -n X ./myScript.sh
-
while sleep X; do ./myScript.sh; done
mise à jour pour émuler la montre, vous voudrez peut-être effacer l'écran entre les itérations. à l'intérieur du script, il ressemblera à ceci :
while sleep X; do clear; command1; command2; done
-
ajoutez l'une des options ci-dessus au script lui-même.
Je suppose que le scintillement est dû au fait que vos commandes mettent un moment à renvoyer leurs valeurs. Voici ma solution de contournement habituelle :
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
L'idée étant de vider l'écran au dernier moment possible.