私はこのコマンドを使用してアルファベットの文字シーケンスを印刷できることを知っており、echo
そのようにしていくつかの実験を行いました。
小文字のシーケンス
$ 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
大文字の連続
$ 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
大文字と小文字のシーケンス
$ 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
もう理解できない部分ですね。special charcaters
Zからaまでを参照してください。ここにはより良い景色があります。
$ echo {a..Z}
a ` _ ^ ] [ Z
知りたい
これらの特殊文字は、大文字と小文字の間にどのように表示されますか?
これらの特殊文字シーケンスはどういう意味ですか?
そして、途中でこのシーケンスだけを印刷するにはどうすればよいですか?
答え1
{A..z}
現在のロケールの文字エンコーディング(ほとんどのASCIIなど)に基づいて拡張されています。実行するかman ascii
(システムにこのエントリがある場合)、ASCIIテーブルZ
との間にこれらの追加文字が表示されますa
(実際に実行したときに得られるものと同じecho {Z..a}
)。
大文字/小文字のみを取得するには、次のようにします。
echo {A..Z} {a..z}
真ん中にあるものを取得するには、次のものを使用できます。
typeset -a foo=($(echo {Z..a}))
echo ${foo[@]:1:((${#foo[@]} - 2))}
まず、配列を作成します。含む境界の外側の2文字、その後すべての配列要素にアクセスします。とは別に境界文字。
PS:うまくいかない理由を見つけることtypeset -a foo=({Z..a})
は、読者の練習課題として残されます。 :-)