Chcę napisać skrypt powłoki, który wykonuje zadanie związane z instalacją. Chcę pokazać ikonę przypominającą obracający się okrąg, drukując znaki |, /, \, -. Po zakończeniu instalacji krąg zniknie. Każda pomoc w tym zakresie byłaby doceniana.tworzenie obracającego się okręgu za pomocą znaków |, /, , - w skrypcie powłoki
Odpowiedz
Przyjęte rozwiązanie jest zbyt skomplikowane. Można po prostu zrobić:
while sleep 1; do
i=$((++i%4 + 2));
printf '\b|/-\' | cut -b 1,$i | tr -d '\n';
done
(Zauważ, że subsekundową spania nie jest przenośny i nie jest nast.)
echo -e 'abc\bd'
^^---backspace char
wyjście wola
abd
Więc w zasadzie, że wyjście jednego z animacji znaków, a następnie wyjście backspace, a następnie wyjście następnego char, itd ...
Potrzebujesz opcji '-e' do' echo'. – huon
Whoops, racja. dzięki. edycja odpowiedź –
Opierając się na Marc Odpowiedź B, oto prosta wersja demonstracyjna:
spin() {
chars="|/– \\"
rotations=3
delay=0.1
for i in `seq 0 $rotations`; do
for char in $chars; do
echo -ne $char
sleep $delay
echo -ne '\b'
done
done
}
Wklej ją do terminalu i wpisz "spin".
Aktualizacja: ta wersja działa zarówno w bash, jak i zsh.
spin() {
char=(\|/– \\)
charLastIndex=3
rotations=3
delay=0.1
for i in `seq 1 $rotations`; do
for j in `seq 0 $charLastIndex`; do
echo -n ${char[$j]}
sleep $delay
echo -ne '\b'
done
done
}
Aktualizacja: wersja liori za prace w wielu muszli.
spin() {
rotations=3
delay=0.1
for i in `seq 0 $rotations`; do
for char in '|' '/' '-' '\'; do
#'# inserted to correct broken syntax highlighting
echo -n $char
sleep $delay
printf "\b"
done
done
}
Uwaga: działa w bash, ale nie w zsh. – liori
@liori, czy znasz sposób na zachowanie echa w zsh lub obejście? Wygląda na to, że zawiera część pytania po echo. –
Hmm, zsh nie lubi przestrzeni jako separatora pola. –
Oto zgodny POSIX powłoki wersja:
while true; do for x in '|' '/' '-' '\'; do printf '\b$x'; sleep 1; done; done
Zauważ, że jako efekt uboczny Twoja wartość x
zostanie przesłonięta. Aby tego uniknąć, załącz instrukcje do funkcji.
Ponieważ nie określił których powłoka, trochę wtyczkę dla fish shell, gdzie może to być zrobione całkiem elegancko przy użyciu tablic:
set -l symbols ◷ ◶ ◵ ◴
while sleep 0.5
echo -e -n "\b$symbols[1]"
set -l symbols $symbols[2..-1] $symbols[1]
end
w tym przypadku symbols
jest zmienną tablicową i zawartość jeśli jest obrócony/przesunięty, ponieważ $symbols[2..-1]
są wszystkie wpisy, ale pierwszy.
- 1. Mnożenie za pomocą wyrażenia w skrypcie powłoki
- 2. filtracyjne znaków spoza alfabetu spośród ciąg w skrypcie powłoki
- 3. sortowanie w skrypcie powłoki
- 4. Zdobądź rogi obracającego się prostokąta.
- 5. Jak wylogować się z komputera za pomocą powłoki?
- 6. Parsowanie JSON w skrypcie powłoki z regex
- 7. Co oznacza $ @ w skrypcie powłoki?
- 8. Zmienna automatyczna w skrypcie powłoki
- 9. Dodawanie licznika w skrypcie powłoki
- 10. Komentarze bloków w skrypcie powłoki
- 11. Co oznacza "$$" w skrypcie powłoki?
- 12. użyciem lub w skrypcie powłoki
- 13. łańcuch konkludujący w skrypcie powłoki
- 14. Zmienna aktualizacji w skrypcie powłoki TeamCity
- 15. Jak zachować wiodące białe znaki za pomocą echa w skrypcie powłoki?
- 16. Co za $? $ 0 $ 1 $ 2 oznacza w skrypcie powłoki?
- 17. niepoprawny argument opcji "-resize" w skrypcie powłoki
- 18. Jak zadeklarować stałą zmienną w skrypcie powłoki?
- 19. Jak wyświetlić znak tux w skrypcie powłoki?
- 20. Jak zautomatyzować dos2unix za pomocą skryptu powłoki?
- 21. globalne zmienne środowiskowe w skrypcie powłoki
- 22. Jak używać curl w skrypcie powłoki?
- 23. przekazanie argumentu zawierającego spację w skrypcie powłoki
- 24. Sprawdź dane wyjściowe polecenia w skrypcie powłoki
- 25. Uruchom polecenie powłoki ze zmiennej w skrypcie powłoki
- 26. W skrypcie powłoki: komendy powłoki echo, gdy są wykonywane
- 27. Czy czytać zmienną Pythona w skrypcie powłoki?
- 28. Prefixing logi z datą w skrypcie powłoki
- 29. jak wyłączyć dyskretnie xtrace w skrypcie powłoki?
- 30. Jak wykonać obliczenia daty w Skrypcie powłoki?
Dziękuję. Wspaniale. Muszę wypróbować to rozwiązanie i zrozumieć, jak to działa, gdy jestem wolny od mojego spotkania. – user419534