이것은 배쉬 버그입니까?
$ mkdir test && cd test && echo "a" > "some.file"
test$ echo '*'
*
test$ TEST=$(echo '*')
test$ echo $TEST
some.file
두 번째 출력이 *
리터럴 출력뿐만 아니라 (모든) 파일 이름을 구문 분석하는 이유는 무엇입니까 *
? Bash에 버그가 있는 것 같나요?
Ubuntu 18.04, bash 버전 4.4.19(1) 릴리스를 사용해 보았습니다. 이는 다른 운영 체제에서도 마찬가지일 것으로 예상됩니다.
답변1
아니요, 이것은 버그가 아닙니다. 당신은 증명했습니다
echo '*'
리터럴을 생성하므로 *
이 출력을 바꿀 때 다음 명령을 따르십시오.
TEST=$(echo '*')
*
변수에 넣어질 것입니다 $TEST
. 그럼 당신이 언제
echo $TEST
여기서 세상은 확장될 것이다. 마지막 명령을 실행하고 디렉터리를 변경한 후 다시 실행하여 이를 확인할 수 있습니다.
*
당신이 출력을 얻을 것이라고 말하면
echo "$TEST"
설명대로여기, 큰따옴표는 변수 확장을 허용하지만 전역 확장은 허용하지 않습니다.