Vím, že můžeme vytisknout posloupnost písmen abecedy pomocí echo
a trochu si to vyzkoušeli.
Sekvence malých písmen
$ 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
Sekvence velkých písmen
$ 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
Sekvence velkých a malých písmen
$ 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
Tohle je část, kterou nechápu. Viz special charcaters
od Z do a. Tady je lepší pohled.
$ echo {a..Z}
a ` _ ^ ] [ Z
Chci to vědět
-
Jak se sem dostaly tyto speciální znaky mezi velkými a malými písmeny?
-
Co znamenají tyto speciální sekvence znaků?
-
Také, Jak vytisknu tuto sekvenci pouze mezi?
Přijatá odpověď:
{A..z}
expanduje podle kódování znaků vašeho aktuálního národního prostředí, což je s největší pravděpodobností ASCII nebo něco jemu blízkého. Pokud spustíte man ascii
(v případě, že to máte na svém systému) nebo se podívejte na ASCII tabulku, kde uvidíte tyto další znaky mezi Z
a a
(totéž získáte při spuštění echo {Z..a}
vlastně).
Chcete-li získat pouze velká/malá písmena, použijte
echo {A..Z} {a..z}
Chcete-li získat pouze ty mezi, můžete použít
typeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}
který nejprve vytvoří pole včetně dva znaky těsně za hranicí a poté přistupuje ke všem prvkům pole kromě hraniční znaky.
PS:Zjistěte, proč typeset -a foo=({Z..a})
nefunguje je ponecháno jako cvičení pro čtenáře 🙂