명령 을 사용했는데 $(())
다음 오류가 표시되었습니다.
bash: 0: command not found
이 오류는 왜 발생합니까?
답변1
이는 $(( ))
산술 치환 또는 산술 확장입니다. 여기에서 (정수) 산술 연산을 수행할 수 있으며 쉘은 이를 실행하고 전체 표현식을 이러한 연산의 결과로 대체합니다.
이렇게 사용하는 경우를 자주 볼 수 있습니다
count=$(( count + 1 ))
여기서 쉘은 아무 작업도 수행하지 않으므로(산술 대체는 널임) 쉘 bash
은 결과를 0으로 결정합니다.
이를 명령으로 사용하고 있습니다. 즉, 쉘이 0
결과를 명령으로 실행하려고 시도한다는 의미입니다.
실패하고 이유를 알려줍니다("0: 명령을 찾을 수 없음").
이는 빈 산술 대체이며 다른 쉘에서 다르게 처리되는 극단적인 경우인 것 같습니다. and ( OpenBSD에서)가 bash
있는 쉘은 실행을 시도하고 , while 및 불평합니다:zsh
pdksh
ksh
0
dash
yash
$ dash -c '$(( ))'
dash: 1: arithmetic expression: expecting primary: " "
$ yash -c '$(( ))'
yash: arithmetic: a value is missing
이것POSIX 표준설명하다
확장으로서 쉘은 나열된 것 이상의 산술 표현식을 인식합니다.
...이것은 bash
, zsh
및 pdksh
.(즉, 빈 표현식을 "0"으로 인식함)의 함수일 수 있습니다.