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; done
upd. 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.