Ein Memo zur Implementierung von Animationen, die für Fortschritts- und Ladebildschirme in Bash auf der Linux-Kommandozeile verwendet werden können.
Wie sollten wir bewegliche Textzeichenfolgen wie “now loading…” in Bash ausdrücken?
So geht’s.
chars="/\\"
while :; do
for (( i=0; i<${#chars}; i++ )); do
echo -en "running... ${chars:$i:1}" "\r"
sleep 1
# Machen Sie etwas, das Sie mögen
. "/mnt/c/pg/detect_changes/detect_changes_in_a_directory_contacam.sh"
done
done
running… /
und
running…
wechseln jede Sekunde und zeigen, dass es ordnungsgemäß funktioniert, und da die Kommandozeile während des Betriebs nur eine Zeile verwendet, ist es leicht zu lesen, auch wenn andere Nachrichten dazwischenkommen.
Es gibt auch diesen Ansatz:
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
Im Gegensatz zum zuvor erwähnten Ansatz, der während einer while-Schleife kontinuierlich Animationen anzeigt, kann dies verwendet werden, wenn der Fortschrittsgrad von 1 bis 100 bestimmt ist.
Anstatt es also innerhalb einer Schleife zu verwenden, wird es eher zwischen Teilen eines Skripts verwendet.