Sie können tput cup 0 0
verwenden um den Cursor oben links auf dem Bildschirm zu platzieren. clear
einmal.
#!/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
Es könnte schwierig sein, eine Echtzeitlösung in Bash zu implementieren.
Es gibt viele Möglichkeiten, ein Skript einmal in X Sekunden auszuführen, Sie können watch
verwenden .Ich nehme an, Sie haben bereits myScript.sh
verfügbar. Ersetzen Sie X durch die Anzahl der Sekunden, die Sie benötigen.
-
watch -n X ./myScript.sh
-
while sleep X; do ./myScript.sh; done
aktualisiert. Um die Uhr zu emulieren, möchten Sie möglicherweise den Bildschirm zwischen den Iterationen löschen. innerhalb des Skripts sieht es so aus:
while sleep X; do clear; command1; command2; done
-
fügen Sie dem Skript selbst eine der obigen Optionen hinzu.
Ich gehe davon aus, dass das Flackern darauf zurückzuführen ist, dass Ihre Befehle einen Moment brauchen, um ihre Werte zurückzugeben. Dies ist meine übliche Problemumgehung:
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
Die Idee ist, dass wir den Bildschirm im letztmöglichen Moment löschen.