$ bash -c "for VAR in {0..9}; do echo $VAR; done;
따옴표로 묶인 내용을 정확하게 포함하는 쉘 스크립트는 예상대로 작동합니다.
결과는 10개의 빈 줄입니다. 이 줄을 어떤 방식으로 편집하든(즉 , /bin/bash
대신 , , 또는 다른 변수 이름을 사용하여 ) 파일에 동일한 결과가 출력됩니다.sh
bash
${VAR}
"$VAR"
"${VAR}"
앞서 설정한 변수 이름을 으로만 사용하면
$ VAR=1
1, 10번 출력됩니다.
내 사용자에게는 둘 다 .bash
완전히 정상적으로 보입니다 . .bash_profile
이것이 나를 미치게 만들고 있지만 매우 분명한 것을 놓치고 있습니까?
답변1
다음 명령을 사용하여 디버깅을 켜면 무슨 일이 일어나고 있는지 확인할 수 있습니다 set -x
.
$ set -x
$ bash -c "for VAR in {0..9}; do echo $VAR; done;"
+ bash -c 'for VAR in {0..9}; do echo ; done;'
따라서 표현식 주위에 큰따옴표를 사용하면 -c
대화형 상위 셸 확장 $VAR
(빈 문자열까지)이 가능합니다. 작은따옴표를 사용하면 예상대로 작동합니다.
bash -c 'for VAR in {0..9}; do echo $VAR; done;'
또는 탈출하려면 $
:
bash -c "for VAR in {0..9}; do echo \$VAR; done;"