Můžete použít tput cup 0 0 pro odeslání kurzoru nahoru do levé horní části obrazovky. clear jednou.
#!/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
Může být složité implementovat řešení v reálném čase v bash.
Existuje mnoho způsobů, jak spustit skript jednou za X sekund, můžete použít watch .Předpokládám, že již máte myScript.sh dostupný. Nahraďte X počtem sekund, které potřebujete.
-
watch -n X ./myScript.sh -
while sleep X; do ./myScript.sh; doneupd. Chcete-li emulovat hodinky, můžete mezi iteracemi vymazat obrazovku. uvnitř skriptu to bude vypadat takto:
while sleep X; do clear; command1; command2; done -
přidejte jednu z výše uvedených možností do samotného skriptu.
Předpokládám, že blikání je způsobeno tím, že vašim příkazům chvíli trvá, než vrátí jejich hodnoty. Toto je moje obvyklé řešení:
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
Myšlenka je taková, že vyčistíme obrazovku na poslední možnou chvíli.