Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Bash/Shell 스크립트의 수학/산술, 예제 포함

수학은 쉽고 Bash 스크립팅은 쉽기 때문에 Bash/Shell 스크립트에서 수학/산술을 수행하는 것도 쉬워야 합니다. 그렇습니다. 방법은 다음과 같습니다.

정수 작업

Bash의 내장 산술은 정수(정수) 값만 처리할 수 있습니다. 정수가 아닌 값으로 변수를 선언하려는 경우:

declare -i e=2.5

다음이 표시됩니다.

bash: declare: 2.5: syntax error: invalid arithmetic operator (error token is ".5")

정수가 아닌 숫자로 작업하려면 외부 프로그램을 사용하여 계산을 수행해야 합니다. 하지만 먼저 기본 제공 Bash 산술을 사용하여 정수로 작업하는 방법이 있습니다.

변수 선언 사용

변수가 declare를 사용하여 정수로 선언된 경우 문을 사용하면 특별한 고려 없이 산술을 수행할 수 있습니다.

# Declaring variables as integers
declare -i x=4
declare -i y=2

# Performing arithmetic with integer variables
result=x/y 

echo $result

다음을 반환합니다.

2

변수가 정수로 선언된 경우 수학 문장은 평가를 위해 대괄호로 묶을 필요가 없습니다.

이중 괄호/괄호 사용

변수가 특별히 정수로 선언되지 않았거나 스크립트 매개변수로 전달되었거나 프로그램에서 출력된 경우 기본적으로 문자열로 처리됩니다.

Bash는 산술 문자열을 처리할 수 있습니다. 표현식이 이중 괄호를 사용하는 산술 표현식으로 플래그가 지정된 경우에만 . 아래 예를 참조하십시오.

x = 6
((y=$x+3))
echo $y

위의 Bash 스크립트 스니펫은 표현식의 올바른 평가를 출력합니다.

9

...대괄호로 묶인 산술 표현식이 변수를 문자열로 취급하지 않고 숫자가 포함된 변수를 포함하는 것으로 올바르게 해석되었기 때문입니다.

대괄호 제외:

y=$x+3

다음과 같은 결과를 얻을 수 있습니다.

6+3

표현식은 두 문자열을 결합하는 것으로 처리되며 평가되지 않습니다.

지원되는 수학 연산자

Bash 내장 산술은 다음 연산자를 지원합니다.

<일>
+ 추가
빼기
++ 증가
감소
* 곱하기
/ 사업부
% 나머지
** 지수화

부울 및 산술

평가된 표현식은 0 또는 1을 반환하므로 부울 연산자를 사용할 때도 이중 대괄호가 표시됩니다.

if (( x > y )); then
    echo "x is greater than y"
fi

여기에서 Bash 부울 연산에 대해 자세히 알아보십시오.

10진수 값 작업

bc 사용 명령

이 기사의 앞부분에서 볼 수 있듯이 정수가 아닌 값으로 Bash 산술을 사용하면 오류가 발생합니다.

BC 명령은 10진수 값(및 더 복잡한 수학)을 처리할 수 있습니다. 구문은 다음과 같습니다.

bc OPTIONS FILE

어디에:

  • OPTIONS는 옵션 목록입니다(전체 옵션 목록은 여기 참조)
  • FILE은 풀려는 산술이 포함된 텍스트 파일의 경로입니다.

bc로 파이프로 연결되는 입력을 수락하므로 방정식을 파일에 저장할 필요가 없습니다. 콘솔에서 직접 파이프할 수 있습니다.

echo "2.32+3.45" | bc

...다음의 정답을 출력합니다:

5.77

다음은 명령줄 응용 프로그램 입력 및 출력 파이핑 및 리디렉션에 대한 전체 설명입니다.

다음을 실행하여 전체 bc 사용자 설명서를 볼 수 있습니다.

man bc

사용자 설명서에 자세히 설명되어 있는 bc 명령에 대한 복잡한 수학을 위한 고급 구문이 많이 있습니다.