!["echo [0123456789]"가 "1"을 반환하는 이유는 무엇입니까? [복사]](https://linux55.com/image/187796/%22echo%20%5B0123456789%5D%22%EA%B0%80%20%221%22%EC%9D%84%20%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
왜 이런 일이 발생하는지 이해하도록 도와주실 수 있나요?
$ 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]