Je recherche un script qui crée une animation de rotation utilisant le caractère /
, -
, |
et \
.
Si vous passez continuellement entre ces caractères, il devrait ressembler à sa rotation. Comment faire cela?
Utilisez ce script:
#!/bin/bash
chars="/-\|"
while :; do
for (( i=0; i<${#chars}; i++ )); do
sleep 0.5
echo -en "${chars:$i:1}" "\r"
done
done
La boucle while
a une durée infinie. La boucle for
parcourt chaque caractère de la chaîne indiquée dans $chars
. echo
imprime le caractère avec un retour à la carrosserie \r
, mais sans saut de ligne -n
. -e
force echo à interpréter les séquences d'échappement telles que \r
. Il y a un délai de 0,5 seconde entre chaque changement.
Voici un exemple utilisant \b
, qui indique à l'émulateur de terminal de déplacer le curseur d'une colonne à gauche, afin de continuer à écraser le même caractère à plusieurs reprises.
#!/usr/bin/env bash
spinner() {
local i sp n
sp='/-\|'
n=${#sp}
printf ' '
while sleep 0.1; do
printf "%s\b" "${sp:i++%n:1}"
done
}
printf 'Doing important work '
spinner &
sleep 10 # sleeping for 10 seconds is important work
kill "$!" # kill the spinner
printf '\n'
Voir BashFAQ 34 pour plus d'informations.
Puisque vous ne demandez pas explicitement bash, un petit bouchon pour le poisson-coquille , où cela peut être résolu à merveille IMO:
set -l symbols ◷ ◶ ◵ ◴
while sleep 0.5
echo -e -n "\b$symbols[1]"
set -l symbols $symbols[2..-1] $symbols[1]
end
Dans ce cas, symbols
est une variable de tableau et son contenu s’il est pivoté/décalé, car $symbols[2..-1]
sont toutes des entrées à l’exception de la première.