Puoi usare tput cup 0 0
per portare il cursore in alto a sinistra dello schermo. clear
una volta.
#!/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
Potrebbe essere complicato implementare una soluzione in tempo reale in bash.
Ci sono molti modi per eseguire lo script una volta ogni X secondi puoi usare watch
.Presumo che tu abbia già myScript.sh
a disposizione. Sostituisci X con il numero di secondi di cui hai bisogno.
-
watch -n X ./myScript.sh
-
while sleep X; do ./myScript.sh; done
aggiorna. per emulare l'orologio potresti voler cancellare lo schermo tra le iterazioni. all'interno dello script avrà questo aspetto:
while sleep X; do clear; command1; command2; done
-
aggiungi una delle opzioni sopra allo script stesso.
Presumo che lo sfarfallio sia dovuto al fatto che i tuoi comandi impiegano un momento per restituire i loro valori. Questa è la mia solita soluzione alternativa:
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'idea è quella di pulire lo schermo all'ultimo momento possibile.