왜 이런 일이 발생하는지 이해하도록 도와주실 수 있나요?
$ 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]