Ich möchte ein Shell-Skript schreiben, die Installation betreffende Aufgabe tut. Ich möchte ein Symbol wie einen rotierenden Kreis anzeigen, indem ich die Zeichen |, /, \, - drücke. Sobald die Installation abgeschlossen ist, verschwindet dieser Kreis. Jede Hilfe dazu wäre willkommen.Erstellen von rotierenden Kreis mit Zeichen |, /, , - in Shell-Skript
Antwort
Die akzeptierte Lösung ist übermäßig kompliziert. Sie können einfach tun:
while sleep 1; do
i=$((++i%4 + 2));
printf '\b|/-\' | cut -b 1,$i | tr -d '\n';
done
(Beachten Sie, dass Subsekunden Schlaf nicht tragbar ist, und weder ist f.)
echo -e 'abc\bd'
^^---backspace char
ausgeben wird
abd
Sie also im Grunde würde Ausgang eines Ihrer Animation Zeichen, dann Ausgang ein Backspace, dann gibt das nächste Zeichen, etc ...
Sie benötigen die Option '-e' um' echo' zu verwenden. – huon
Whoops, richtig. Vielen Dank. Bearbeiten der Antwort –
Aufbauend auf Marc B's Antwort, hier ist eine einfache Demo:
Fügen Sie es in Ihr Terminal und geben Sie "Spin".
Update: Diese Version funktioniert in bash und 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
}
Update: Liori Version arbeitet in mehreren Schalen.
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
}
Hinweis: funktioniert in bash, aber nicht in zsh. – liori
@liori, wissen Sie von einer Möglichkeit, Echo in zsh, oder eine Umgehung zu erhalten? Es scheint einen Teil der Eingabeaufforderung nach dem Echo zu enthalten. –
Hmm, zsh mag keinen Platz als Feldtrenner. –
Hier ist POSIX-Shell-konform Version:
while true; do for x in '|' '/' '-' '\'; do printf '\b$x'; sleep 1; done; done
Beachten Sie, dass als Nebeneffekt Ihr Wert von x
wird außer Kraft gesetzt. Um dies zu vermeiden, schließen Sie Anweisungen in die Funktion ein.
Da Sie nicht angeben, welche Shell, ein wenig Stecker für die fish shell, wo das sehr elegant Arrays durchgeführt werden kann:
set -l symbols ◷ ◶ ◵ ◴
while sleep 0.5
echo -e -n "\b$symbols[1]"
set -l symbols $symbols[2..-1] $symbols[1]
end
In diesem Fall symbols
ist ein Array-Variable, und den Inhalt wenn es gedreht/verschoben wird, weil $symbols[2..-1]
alle Einträge sind, aber der erste.
- 1. Android - Schaltfläche mit rotierenden/rotierenden "loading" Bild bei gedrückter
- 2. mit rotierenden popToRootViewController
- 3. von rotierenden Protokolldateien in logstash
- 4. Asynchrone Shellskript in Cocoa-Applescript?
- 5. Unity Move rotierenden Objekt
- 6. Akkordeon-Menü mit rotierenden Pfeilen
- 7. Erstellen Kreis Schaltfläche in iOS7 ohne Bilder
- 8. Wie mache ich eine if-Anweisung für meinen rotierenden Kreis in Swift?
- 9. Problem rotierenden Textview in Android
- 10. Mehr als einen Kreis in Java erstellen
- 11. Erstellen von Dateinamen mit Unicode-Zeichen
- 12. So erstellen Sie Segmente in einem Kreis mit HTML5 & CSS3
- 13. jQuery: Erstellen eines Kreis Slider
- 14. eine Linie mit Kreis Erstellen in der Mitte
- 15. Array von Ellipsen entlang eigenen Mittelpunkt rotierenden
- 16. Transparent Kreis mit Grenze
- 17. Hinzufügen von rotierenden Werkzeug in jDialog in Java
- 18. Drehen eines Vektors mit parametrischen Gleichung von 3D-Kreis
- 19. Highcharts: Kreis mit Bildhintergrund
- 20. CSS erstellen Grenze auf Hover um gefüllten Kreis mit einem leeren Raum zwischen Kreis und Rahmen
- 21. Pseudo-Klasse :: vor - erstellen css Kreis
- 22. rotierenden Objekt bricht Einschränkungen/Bounds
- 23. RichTextBox rotierenden Text zum Drucken
- 24. rotierenden Gradienten Hintergrund keine js
- 25. XNA: Kollisionen zwischen rotierenden Sprites
- 26. Kreis im Kreis Kollision
- 27. R Kreis/Akkorddiagramm mit Circlize aus Datenframe erstellen
- 28. Kreis mit Sechsecken füllen
- 29. Farbverlauf in Kreis
- 30. Libgdx-Kreis mit Linienbreite
Danke. Es ist großartig. Ich muss diese Lösung ausprobieren und werde verstehen, wie es funktioniert, sobald ich von meinem Treffen frei bin. – user419534