2013-08-19 3 views
10

이것은 가장 자극적 인 질문이지만, 그럼에도 불구하고 호기심에 부딪혔습니다. 나는 웹상에서 어떤 대답 (물론 결정적인 것은 말할 것도 없다)을 접할 수 없었다.왜 bash 명령 줄 인수는 중괄호를 필요로합니까?

고급 쉘 스크립팅을 읽는 동안 9 번째 인수 다음에 오는 모든 것이 $ {} (더 긴 변수 참조/대체 형식)로 둘러싸여 있어야한다는 명령 행 위치 인수에 대해서는 this section이 나타났습니다.

간단히 말해서, 명령 줄 인수를 $10, $11, ... 대신 ${10}, ${11}...으로 참조해야하는 이유는 무엇입니까?

+11

기록; 원래 Bourne 쉘은'$ 12'를'$ {1} 2'로 해석하고 ('$ {12}'AFAICR을 허용하지 않았습니다). –

답변

6

특히 "위치 매개 변수"와 관련이 있습니다. $ {var} 대신 $ var를 사용하는 것은 bash에서 약식입니다. 대부분의 경우 잘 작동합니다. Bash 변수는 문자 또는 밑줄로 시작해야합니다. 그것은 내부적으로 숫자로 시작하는 변수를 "위치 매개 변수"로 취급합니다. bash가 위치 매개 변수를 감지하면 첫 번째 숫자 만 표시되므로 $ 10은 $ 1 "0"을 반환합니다. $ {10}을 호출하면 bash가 첫 번째 숫자의 내장 기본값 대신 전체 변수를 살펴 보도록 지시합니다.

왜 이런 식입니까? 나는 모른다. 확장 된 레거시 구현은 내 추측입니다. "누가 .... 이상을 필요로 할까?"

관련 문제