나는 이 명령을 사용하여 알파벳의 문자 시퀀스를 인쇄할 수 있다는 것을 알고 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))}
먼저 배열을 만듭니다.포함하다경계 밖의 두 문자, 그런 다음 모든 배열 요소에 액세스합니다.와는 별개로경계 문자.
추신: 작동하지 않는 이유를 알아내는 typeset -a foo=({Z..a})
것은 독자의 연습 과제로 남겨집니다. :-)