일을 하다가 이런 걸 발견했어요
$ echo [Login]
g
$ echo [kilo]
k
$ echo [gauke]
e g k
$ echo [quasi-star]
k m q
이 출력을 발생시키기 위해 뒤에서 무슨 일이 일어나고 있습니까? 출력은 echo [quasi-star]
정신을 잃고 전혀 존재하지 않는 문자를 제공합니다.
노트:네, 결과물을 얻을 수 있다는 걸 알아요echo "[Login]"
답변1
따옴표가 없으면 쉘은 문자 클래스의 경로 이름(glob) 확장을 수행하므로 []
현재 디렉토리에 e
, g
, k
, , 이름의 m
파일이 있을 수 있습니다 q
. 이것이 결과입니다.
echo
기본적으로 경로명 확장의 결과만 인쇄하면 됩니다.
예를 들어보겠습니다 echo [quasi-star]
:
for의 확장된 결과 [quasi-star]
는 from의 단일 문자입니다 quasijklmnopqrstar
(의도적으로 유지된 중복). 셸의 관점에서 보면 주변 문자가 없기 때문에 확장의 현재 디렉터리에 있는 단일 문자 파일 이름만 일치합니다.