Bash의 산술 구문

Bash의 산술 구문

다음과 같은 산술 값 오류가 발생합니다.

#!/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_countline_count/3

이것이 "line_count: command notfound" 오류가 발생한 후 출력되는 이유입니다 /3.

ShellCheck를 살펴보세요https://www.shellcheck.net/ 일반적인 문제가 있는지 스크립트를 확인합니다. 이 경우에는 $(...)필요한 것을 찾는 데 도움이 되지 않지만 이는 완벽하게 합법적인 쉘 코드이기 $((...))때문입니다 . $(line_count)그것은 단지 잘못된 일을 할 뿐입니다.

관련 정보