다음과 같은 산술 값 오류가 발생합니다.
#!/bin/bash
n=0
line_count=9
line_count=$(line_count)/3
echo $line_count
exit 0
예상 결과는 3
[]$ ./test.sh
./test.sh: line 4: line_count: command not found
/3
[]$ more test.sh
답변1
보충하다@Kusalananda의 답변, 표준 구문 외에도 다음과 같습니다 sh
.
line_count=$((line_count / 3))
bash
에서 상속된 다음 구문을 사용할 수도 있습니다 ( ksh
에서도 사용 가능 zsh
).
((행수 = 행수/3))
((행 수/= 3))
line_count/=3으로 놔두세요
조판-i 줄 수 = 줄 수/3
bash
(및 zsh
)은 다음도 지원합니다.
줄 수=$[줄 수/3]
이전 POSIX 이전 Bourne/Almquist의 경우 sh
:
line_count=`expr "$line_count" / 3`
답변2
bash
산술 확장은 다른 쉘에 의해 수행됩니다 $(( ... ))
.
line_count=$(( line_count/3 ))
를 사용하면 접미사가 붙은 변수 line_count=$(line_count)/3
에 명령의 출력을 할당할 수 있습니다 .line_count
line_count
/3
이것이 "line_count: command notfound" 오류가 발생한 후 출력되는 이유입니다 /3
.
ShellCheck를 살펴보세요https://www.shellcheck.net/
일반적인 문제가 있는지 스크립트를 확인합니다. 이 경우에는 $(...)
필요한 것을 찾는 데 도움이 되지 않지만 이는 완벽하게 합법적인 쉘 코드이기 $((...))
때문입니다 . $(line_count)
그것은 단지 잘못된 일을 할 뿐입니다.