다음 스크립트가 있습니다 my.sh
.
echo $@
이제 파일 전역 확장을 보고 싶기 때문에 이것이 마음에 들고 잘 작동합니다.
$ bash my.sh *
$ f1 f2 my.sh
이제 다음에 설명된 기술을 사용하여 확장을 억제하려고 합니다.이 답변:
$ bash my.sh "*"
$ bash my.sh \*
하지만 여전히 모든 파일 목록이 출력됩니다. 왜?
답변1
스크립트가 처음 호출될 때
$ bash my.sh *
파일 이름 글로빙은 스크립트를 호출하기 전에 셸에서 수행됩니다.
두 번째로 스크립트를 호출할 때
$ bash my.sh "*"
파일 이름 글로빙은 런타임 시 스크립트에서 수행됩니다 echo $@
.
이를 방지하려면 $@
줄 주위에 큰따옴표를 넣으세요.
echo "$@"