괄호에서 달러 기호와 대괄호 $ […]는 무엇을 의미합니까?


34

$[expr]마치 산술 확장 을 수행하는 것처럼 보입니다 $((expr)). 그러나 나는 $[bash 매뉴얼에서 언급을 찾을 수 없다 . 이 명령은 결과를 제공하지 않습니다.

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['

이 연산자는 무엇이며 그 동작은 어디에서나 표준화 되었습니까?

내 bash 버전 : GNU bash, 버전 3.2.51 (1)-릴리스 (x86_64-apple-darwin13)


3
표준 에 대한 질문에 명시 적으로 대답하려면 다음과 같이하십시오 . (구식 이 아닌 ) bash특정 $[...]구문은 비표준입니다. 은 $((...))(즉, 유래 ksh) POSIX 표준입니다.
Janis

2
우분투 11.04 : man bash | grep -E '\$\['. 출력 : 구식 $ [expression]은 더 이상 사용되지 않으며 향후 버전에서 제거 될 예정입니다.
Cyrus

매뉴얼 페이지에는 _t_h_i_s (man 유틸리티가 다르게 표시되도록 해석)와 같은 내용이 포함될 수 있으므로 검색 한 내용이 다음과 같이 기록되어 있으면 grep이 실패 할 수 있습니다.
Olivier Dulac

답변:


19

오래된 bash 소스는 여기에서 찾을 수 있습니다 . 특히 bash-1.14.7.tar.gz를 다운로드 했습니다 . 에서 documentation/bash.txt당신은 발견 할 것이다 :

산술 확장

산술 확장을 통해 산술 표현식을 평가하고 결과를 대체 할 수 있습니다. 산술 확장에는 두 가지 형식이 있습니다.

     $[expression]

     $((expression))

참조는하기 $[에 사라 doc/bash.html으로부터 bash는-문서-2.0.tar.gz 다운로드NEWS파일은 언급 :

$[...]산술 확장 구문은 더 이상 찬성, 지원되지 않습니다 $((...)).

$((...))또한 산술 확장 의 표준 구문 이지만 원래 Bash 구현보다 나중에 표준에 추가되었을 수 있습니다.

그러나 $[...]Bash 5.0에서는 여전히 작동하는 것처럼 보이므로 완전히 제거되지 않았습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.