Bash 변수에는 어떤 문자가 허용됩니까?
누군가 bash 매뉴얼 페이지에서 bash 변수에 허용되는 이름이 설명되어 있는 위치를 알려줄 수 있습니까?
많은 정보를 보고 질문했지만(질문 편집 참조) 명확한 답변이 없습니다.
답변1
변수에 값을 할당할 수 있습니다(사용 var=value
). 하나 있다사이의 미묘한 차이범위그리고바꾸다:
ㅏ범위값을 저장하는 엔터티입니다. 그것은 될 수 있습니다이름, 숫자 또는 아래 나열된 특수 문자 중 하나입니다. ㅏ바꾸다로 표시되는 매개변수입니다.이름.
이름 문자, 숫자, 밑줄로만 구성되고 문자나 밑줄로 시작하는 단어입니다.이름s는 쉘 변수와 함수 이름으로 사용됩니다. 또한 ~으로 알려진식별자.
(이것은 Bash 매뉴얼의 정의입니다. POSIX에도 비슷한 정의가 있을 수 있습니다.)
따라서 정규식 [a-zA-Z_][a-zA-Z_0-9]*
과 일치하는 모든 항목(ASCII 문자 범위 가정)은 변수의 유효한 이름입니다. 유니코드 문자와 구두점은 작동하지 않습니다.
일부 언어는 유니코드도 지원하지만 이는 대부분의 프로그래밍 언어에서 변수 이름에 지원되는 문자 집합과 거의 같습니다. 숫자로 시작하는 단어는 숫자로 처리됩니다( 및 대개 유효 숫자 0xabcd
와 같은 것임 ). 대시는 종종 마이너스 연산자로 처리되며, 두 변수(1개가 아닌)에 대한 간단한 산술 연산과 같습니다. 등.123e3
a-b
이 형식에 속하지 않는 매개변수는 번호가 매겨진 위치 매개변수(사용 가능한 스크립트/함수 매개변수 set
)와특수 매개변수. (단일 밑줄) 은 _
후자 중 하나이며 오류 없이 지정할 수 있지만 즉시 재설정되므로 별로 쓸모가 없습니다.
이것들은 모두 좋습니다:
$ a123=foo __=bar
$ echo $a123 $__
foo bar
하지만:
$ _=foo echo bar >/dev/null
$ echo $_
bar
대문자의 경우변수 목록Bash 또는 기타 Bourne-ish 쉘에 특별합니다(readline 변수를 무시하십시오. 여기서는 관련이 없습니다). 다들 대문자로 시작하는 것 같은데,와는 별개로histchars
모두 소문자(!) 입니다 . 다행히 기록 확장이 활성화된 경우에만 중요합니다.