Ich weiß, dass wir mit echo
eine Folge von Buchstaben des Alphabets drucken können Befehl und experimentierte damit ein wenig.
Kleinbuchstabenfolge
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
Großbuchstabenfolge
$ echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Groß- und Kleinbuchstabenfolge
$ echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
Das ist jetzt der Teil, den ich nicht verstehe. Siehe die special charcaters
von Z bis a. Hier ist eine bessere Ansicht.
$ echo {a..Z}
a ` _ ^ ] [ Z
Ich möchte es wissen
-
Wie kamen diese Sonderzeichen hier zwischen Groß- und Kleinbuchstaben ?
-
Was bedeutet diese Sonderzeichenfolge?
-
Außerdem:Wie drucke ich diese Sequenz nur zwischendurch?
Akzeptierte Antwort:
{A..z}
wird gemäß der Zeichencodierung Ihres aktuellen Gebietsschemas erweitert, die höchstwahrscheinlich ASCII oder etwas Ähnliches ist. Wenn Sie man ascii
ausführen (falls Sie dies auf Ihrem System haben) oder schauen Sie sich eine ASCII-Tabelle an, Sie sehen diese zusätzlichen Zeichen zwischen Z
und a
(dasselbe erhalten Sie, wenn Sie echo {Z..a}
ausführen eigentlich).
Um nur Groß-/Kleinbuchstaben zu erhalten, verwenden Sie
echo {A..Z} {a..z}
Um nur die dazwischen zu bekommen, können Sie
verwendentypeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}
was zuerst ein Array erstellt inklusive die beiden Zeichen knapp außerhalb der Grenze und greift dann außer auf alle Array-Elemente zu die Begrenzungszeichen.
PS:Finden Sie heraus, warum typeset -a foo=({Z..a})
funktioniert nicht, bleibt dem Leser als Übung überlassen 🙂