"echo [0123456789]"가 "1"을 반환하는 이유는 무엇입니까? [복사]

"echo [0123456789]"가 "1"을 반환하는 이유는 무엇입니까? [복사]

왜 이런 일이 발생하는지 이해하도록 도와주실 수 있나요?

$ echo [023456789]
[023456789]

$ echo [0123456789]
1

귀하의 피드백을 바탕으로 [0123456789] 값의 매개변수를 취하고 해당 리터럴 문자열을 변수에 할당할 수 있는 bash 스크립트를 작성하는 방법을 알아내고자 합니다.

답변1

현재 디렉터리에 "1"이라는 파일이 있습니다.

echo [0123456789]

이름이 단일 숫자로 구성된 현재 디렉터리의 모든 파일 이름을 표시하도록 bash에 지시하는 와일드카드 명령입니다. 해당 파일이 없으면 echo는 와일드카드 사양 자체를 표시합니다.

알아채다:

$ mkdir /tmp/new-directory
$ cd /tmp/new-directory
$ echo [0123456789]
[0123456789]

$ touch 1 2 4 8
$ echo [0123456789]
1 2 4 8

일치하는 파일 이름이 아닌 문자 그대로 문자열을 표시하려면 문자열을 따옴표로 묶습니다.

$ echo "[0123456789]"
[0123456789]

관련 정보