리눅스 산술 계산

LinuxBeginner
지금 연습하기

소개

Linux 명령줄은 산술 계산을 수행하기 위한 강력한 도구를 제공합니다. Linux 에서 사용할 수 있는 가장 다재다능한 계산기 중 하나는 터미널에서 직접 간단하고 복잡한 수학 연산을 수행할 수 있는 bc (Basic Calculator) 입니다.

이 랩에서는 bc 명령을 사용하여 Linux 에서 다양한 산술 계산을 수행하는 방법을 배우게 됩니다. 기본적인 연산부터 시작하여 점차적으로 더 복잡한 표현식으로 이동할 것입니다. 여러분이 배우게 될 기술은 스크립팅, 데이터 처리, 그리고 Linux 환경에서 계산 문제를 효율적으로 해결하는 데 유용할 것입니다.

이 랩을 마치면 다음을 수행할 수 있습니다.

  • bc를 사용하여 기본적인 산술 연산을 수행합니다.
  • 여러 연산이 포함된 복잡한 수학 표현식을 처리합니다.
  • 변수를 사용하고 계산에서 정밀도를 제어합니다.
  • 수학적 계산을 자동화하는 스크립트를 생성합니다.

Linux bc 계산기의 기능을 탐구해 봅시다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 79%입니다.학습자들로부터 96%의 긍정적인 리뷰율을 받았습니다.

bc 를 이용한 기본 산술 연산

이 단계에서는 Linux 에서 기본 산술 연산을 위해 bc 명령을 사용하는 방법을 배우겠습니다. bc 명령은 터미널에서 직접 계산을 수행할 수 있는 강력한 계산기 도구입니다.

bc 설치

먼저, 시스템에 bc 계산기가 설치되어 있는지 확인해 보겠습니다.

sudo apt-get update
sudo apt-get install -y bc

설치 과정을 나타내는 출력을 볼 수 있습니다. 설치가 완료되면 다음을 입력하여 작동하는지 확인할 수 있습니다.

bc --version

bc 계산기의 버전 정보를 볼 수 있습니다.

간단한 덧셈 스크립트 생성

이제 bc를 사용하여 덧셈 연산을 수행하는 간단한 스크립트를 만들어 보겠습니다.

  1. 프로젝트 디렉토리로 이동합니다.
cd ~/project
  1. simple_calc.sh라는 새 스크립트 파일을 생성합니다.
touch simple_calc.sh
  1. nano 편집기로 파일을 엽니다.
nano simple_calc.sh
  1. 파일에 다음 내용을 추가합니다.
#!/bin/zsh

## Simple addition using bc
echo "20 + 5" | bc
  1. Ctrl+O, Enter를 눌러 파일을 저장하고 Ctrl+X로 nano 를 종료합니다.

  2. 스크립트를 실행 가능하게 만듭니다.

chmod +x simple_calc.sh
  1. 스크립트를 실행합니다.
./simple_calc.sh

다음 출력을 볼 수 있습니다.

25

이는 bc가 "20 + 5"라는 표현식을 입력으로 받아 25 라는 결과를 생성하는 방법을 보여줍니다.

bc 작동 방식 이해

bc 명령은 파이프라인 지향 계산기입니다. 파이프 기호 (|) 를 사용하여 표현식을 평가를 위해 bc로 보냅니다. 기본 구문은 다음과 같습니다.

echo "expression" | bc

다른 기본 연산도 시도해 볼 수 있습니다.

echo "10 - 3" | bc ## 뺄셈 (Subtraction)
echo "4 * 6" | bc  ## 곱셈 (Multiplication)
echo "15 / 3" | bc ## 나눗셈 (Division)

터미널에서 이러한 명령을 실행하여 결과를 확인하십시오.

echo "10 - 3" | bc
echo "4 * 6" | bc
echo "15 / 3" | bc

출력은 다음과 같아야 합니다.

7
24
5

bc 를 이용한 부동 소수점 계산

이 단계에서는 bc 계산기를 사용하여 부동 소수점 계산을 수행하는 방법을 배우겠습니다. 기본적으로 bc는 정수 산술 연산을 수행하지만, scale 매개변수를 사용하여 소수점 정밀도를 제어할 수 있습니다.

scale 매개변수 이해

bcscale 매개변수는 계산에 사용할 소수점 자릿수를 결정합니다. 작동 방식을 살펴보겠습니다.

  1. scale 을 설정하지 않고 나눗셈을 수행하려면 다음 명령을 시도하십시오.
echo "5 / 2" | bc

출력은 다음과 같습니다.

2

결과가 반올림되지 않고 정수로 잘린 것을 확인하십시오.

  1. 이제 더 정확한 결과를 얻기 위해 scale 을 설정해 보겠습니다.
echo "scale=2; 5 / 2" | bc

출력은 다음과 같습니다.

2.50

scale=2bc에게 2 자리 소수점으로 결과를 계산하도록 지시합니다.

복잡한 계산을 위한 스크립트 생성

scale을 사용하고 더 복잡한 계산을 수행하는 스크립트를 만들어 보겠습니다.

  1. 아직 프로젝트 디렉토리에 있지 않다면, 프로젝트 디렉토리로 이동합니다.
cd ~/project
  1. complex_calc.sh라는 새 스크립트 파일을 생성합니다.
touch complex_calc.sh
  1. nano 편집기로 파일을 엽니다.
nano complex_calc.sh
  1. 파일에 다음 내용을 추가합니다.
#!/bin/zsh

## Complex calculation using bc with scale
result=$(echo "scale=2; (10.5 * 4.2) - (5.5 / 2) + 3^2" | bc)
echo "Result: $result"

이 스크립트는 다음을 수행합니다.

  • scale 을 소수점 2 자리로 설정합니다.
  • 곱셈을 수행합니다: 10.5 * 4.2
  • 나눗셈을 수행합니다: 5.5 / 2
  • 거듭제곱을 계산합니다: 3^2 (3 의 2 제곱)
  • 이러한 연산을 덧셈과 뺄셈과 결합합니다.
  • 결과를 result라는 변수에 저장합니다.
  • 설명 레이블과 함께 결과를 출력합니다.
  1. Ctrl+O, Enter를 눌러 파일을 저장하고 Ctrl+X로 nano 를 종료합니다.

  2. 스크립트를 실행 가능하게 만듭니다.

chmod +x complex_calc.sh
  1. 스크립트를 실행합니다.
./complex_calc.sh

다음과 유사한 출력을 볼 수 있습니다.

Result: 46.35

계산을 분석해 보겠습니다.

  • 10.5 * 4.2 = 44.1
  • 5.5 / 2 = 2.75
  • 3^2 = 9
  • 44.1 - 2.75 + 9 = 50.35

잠깐, 예상 결과는 50.35 여야 하는데 46.35 가 나왔습니다. 이는 스크립트의 계산이 수정되어야 하기 때문입니다. 수정해 보겠습니다.

nano complex_calc.sh

계산을 업데이트합니다.

#!/bin/zsh

## Complex calculation using bc with scale
result=$(echo "scale=2; (10.5 * 4.2) - (5.5 / 2) + 3^2" | bc)
echo "Result: $result"

## Breaking down the calculation
part1=$(echo "scale=2; 10.5 * 4.2" | bc)
part2=$(echo "scale=2; 5.5 / 2" | bc)
part3=$(echo "3^2" | bc)

echo "Part 1 (10.5 * 4.2): $part1"
echo "Part 2 (5.5 / 2): $part2"
echo "Part 3 (3^2): $part3"
echo "Final: $part1 - $part2 + $part3 = $(echo "scale=2; $part1 - $part2 + $part3" | bc)"

변경 사항을 저장하고 스크립트를 다시 실행합니다.

./complex_calc.sh

이 업데이트된 스크립트는 계산의 각 부분을 보여주어 최종 결과를 얻는 방법을 더 쉽게 이해할 수 있게 합니다.

bc 에서 변수 사용하기

이 단계에서는 bc 내에서 변수를 사용하여 계산을 더욱 유연하고 강력하게 만드는 방법을 배우겠습니다. bc 계산기를 사용하면 변수를 정의하고 여러 계산에서 재사용할 수 있습니다.

bc 대화형 모드에서 변수 사용하기

먼저, bc 대화형 모드에서 변수를 직접 사용하는 방법을 살펴보겠습니다.

  1. 대화형 모드에서 bc 계산기를 시작합니다.
bc
  1. 변수를 정의하고 이를 사용하여 계산을 수행합니다.
x = 10
x + 5
x * 2

다음과 같은 출력을 볼 수 있습니다.

15
20
  1. 여러 변수를 정의하고 함께 사용할 수 있습니다.
y = 7
x + y
x * y

출력은 다음과 같습니다.

17
70
  1. Ctrl+D를 누르거나 quit을 입력하여 대화형 모드를 종료합니다.

bc 변수를 사용한 스크립트 생성

이제 bc 계산에서 변수를 사용하는 방법을 보여주는 스크립트를 만들어 보겠습니다.

  1. 아직 프로젝트 디렉토리에 있지 않다면, 프로젝트 디렉토리로 이동합니다.
cd ~/project
  1. variable_calc.sh라는 새 스크립트 파일을 생성합니다.
touch variable_calc.sh
  1. nano 편집기로 파일을 엽니다.
nano variable_calc.sh
  1. 파일에 다음 내용을 추가합니다.
#!/bin/zsh

## Script to demonstrate using variables in bc

## Define input values
radius=5
height=10

## Calculate cylinder volume (π * r² * h)
volume=$(echo "scale=2; 3.14159 * $radius * $radius * $height" | bc)

## Calculate cylinder surface area (2π * r² + 2π * r * h)
surface_area=$(echo "scale=2; 2 * 3.14159 * $radius * $radius + 2 * 3.14159 * $radius * $height" | bc)

## Display results
echo "Cylinder properties with radius $radius and height $height:"
echo "Volume: $volume cubic units"
echo "Surface Area: $surface_area square units"

이 스크립트는 다음을 수행합니다.

  • 원통의 반지름과 높이에 대한 변수를 정의합니다.
  • 공식 π h 를 사용하여 부피를 계산합니다.
  • 공식 2π r² + 2π r * h 를 사용하여 표면적을 계산합니다.
  • 적절한 단위를 사용하여 결과를 표시합니다.
  1. Ctrl+O, Enter를 눌러 파일을 저장하고 Ctrl+X로 nano 를 종료합니다.

  2. 스크립트를 실행 가능하게 만듭니다.

chmod +x variable_calc.sh
  1. 스크립트를 실행합니다.
./variable_calc.sh

다음과 유사한 출력을 볼 수 있습니다.

Cylinder properties with radius 5 and height 10:
Volume: 785.39 cubic units
Surface Area: 471.23 square units

bc 내부에서 변수 사용하기

또한 여러 줄 방식을 사용하여 bc 내에서 완전히 변수를 정의하고 사용할 수 있습니다. 이를 보여주는 다른 스크립트를 만들어 보겠습니다.

  1. 새 파일을 생성합니다.
nano bc_variables.sh
  1. 다음 내용을 추가합니다.
#!/bin/zsh

## Script to demonstrate using variables within bc

bc << EOF
scale=2
radius = 5
height = 10
pi = 3.14159

## Calculate cylinder volume
volume = pi * radius^2 * height
print "Volume: ", volume, " cubic units\n"

## Calculate cylinder surface area
surface_area = 2 * pi * radius^2 + 2 * pi * radius * height
print "Surface Area: ", surface_area, " square units\n"
EOF

이 스크립트는 다음을 수행합니다.

  • "here document" (EOF) 를 사용하여 여러 줄을 bc로 보냅니다.
  • bc 자체 내에서 모든 변수를 정의합니다.
  • 이러한 변수를 사용하여 계산을 수행합니다.
  • bcprint 명령을 사용하여 결과를 표시합니다.
  1. 파일을 저장하고 실행 가능하게 만든 다음 실행합니다.
chmod +x bc_variables.sh
./bc_variables.sh

출력은 이전 스크립트와 유사하지만 bc에서 변수를 사용하는 다른 방식을 보여줍니다.

실용적인 bc 계산기 스크립트 생성

이 마지막 단계에서는 지금까지 배운 모든 개념을 통합하는 더 실용적인 계산기 스크립트를 만들 것입니다. 이 스크립트를 통해 사용자는 메뉴에서 옵션을 선택하여 다양한 계산을 수행할 수 있습니다.

대화형 계산기 구축

대화형 계산기 역할을 하는 스크립트를 만들어 보겠습니다.

  1. 아직 프로젝트 디렉토리에 있지 않다면, 프로젝트 디렉토리로 이동합니다.
cd ~/project
  1. calculator.sh라는 새 스크립트 파일을 생성합니다.
touch calculator.sh
  1. nano 편집기로 파일을 엽니다.
nano calculator.sh
  1. 파일에 다음 내용을 추가합니다.
#!/bin/zsh

## Interactive calculator script using bc

## Function to calculate area of a circle
calculate_circle_area() {
  echo -n "Enter the radius of the circle: "
  read radius
  area=$(echo "scale=2; 3.14159 * $radius * $radius" | bc)
  echo "The area of the circle with radius $radius is: $area square units"
}

## Function to calculate area of a rectangle
calculate_rectangle_area() {
  echo -n "Enter the length of the rectangle: "
  read length
  echo -n "Enter the width of the rectangle: "
  read width
  area=$(echo "scale=2; $length * $width" | bc)
  echo "The area of the rectangle with length $length and width $width is: $area square units"
}

## Function to solve quadratic equation ax² + bx + c = 0
solve_quadratic() {
  echo -n "Enter coefficient a: "
  read a
  echo -n "Enter coefficient b: "
  read b
  echo -n "Enter coefficient c: "
  read c

  ## Calculate discriminant
  discriminant=$(echo "scale=4; ($b * $b) - (4 * $a * $c)" | bc)

  ## Check the discriminant
  if (($(echo "$discriminant < 0" | bc -l))); then
    echo "The equation has no real solutions (discriminant < 0)"
  elif (($(echo "$discriminant == 0" | bc -l))); then
    ## One solution
    x=$(echo "scale=4; -$b / (2 * $a)" | bc)
    echo "The equation has one solution: x = $x"
  else
    ## Two solutions
    x1=$(echo "scale=4; (-$b + sqrt($discriminant)) / (2 * $a)" | bc -l)
    x2=$(echo "scale=4; (-$b - sqrt($discriminant)) / (2 * $a)" | bc -l)
    echo "The equation has two solutions:"
    echo "x1 = $x1"
    echo "x2 = $x2"
  fi
}

## Main program loop
while true; do
  echo ""
  echo "===== BC Calculator Menu ====="
  echo "1. Calculate area of a circle"
  echo "2. Calculate area of a rectangle"
  echo "3. Solve quadratic equation (ax² + bx + c = 0)"
  echo "4. Exit"
  echo ""

  echo -n "Enter your choice (1-4): "
  read choice

  case $choice in
    1) calculate_circle_area ;;
    2) calculate_rectangle_area ;;
    3) solve_quadratic ;;
    4)
      echo "Exiting calculator. Goodbye!"
      exit 0
      ;;
    *) echo "Invalid option. Please try again." ;;
  esac
done

이 스크립트는 다음을 수행합니다.

  • 다양한 유형의 계산에 대한 함수를 정의합니다.
  • 사용자가 원하는 계산을 선택할 수 있는 메뉴 인터페이스를 제공합니다.
  • 모든 수학 연산에 bc를 사용합니다.
  • 이차 방정식과 같은 더 복잡한 수학 공식을 처리합니다.
  1. Ctrl+O, Enter를 눌러 파일을 저장하고 Ctrl+X로 nano 를 종료합니다.

  2. 스크립트를 실행 가능하게 만듭니다.

chmod +x calculator.sh
  1. 계산기 스크립트를 실행합니다.
./calculator.sh
  1. 메뉴에서 각 옵션을 시도해 보십시오.
    • 옵션 1 을 선택하고 반지름을 입력하여 원의 면적을 계산합니다.
    • 옵션 2 를 선택하고 길이와 너비를 입력하여 직사각형의 면적을 계산합니다.
    • 옵션 3 을 선택하고 계수를 입력하여 이차 방정식을 풉니다 (a=1, b=5, c=6 을 시도해 보십시오).
    • 옵션 4 를 선택하여 계산기를 종료합니다.

예를 들어, 옵션 3 을 선택하고 a=1, b=5, c=6 을 입력하면 다음과 유사한 출력을 볼 수 있습니다.

The equation has two solutions:
x1 = -2.0000
x2 = -3.0000

이 대화형 스크립트는 bc가 다양한 수학 문제를 해결하기 위해 더 복잡한 프로그램에 어떻게 통합될 수 있는지를 보여줍니다.

요약

이 랩에서는 Linux 에서 bc 명령줄 계산기를 사용하여 다양한 산술 연산을 수행하는 방법을 배웠습니다.

다음은 수행한 작업에 대한 요약입니다.

  1. 기본 산술 연산:

    • bc 계산기를 설치하고 확인했습니다.
    • 덧셈을 수행하는 간단한 스크립트를 만들었습니다.
    • 파이프 연산자를 사용하여 표현식을 bc로 보내는 방법을 배웠습니다.
    • 덧셈, 뺄셈, 곱셈 및 나눗셈과 같은 기본 연산을 연습했습니다.
  2. 부동 소수점 계산:

    • 소수점 정밀도를 제어하기 위해 scale 매개변수를 사용했습니다.
    • 여러 연산이 포함된 더 복잡한 계산을 위한 스크립트를 만들었습니다.
    • 연산 순서와 괄호를 사용하여 계산 흐름을 제어하는 방법을 이해했습니다.
  3. 변수 사용:

    • bc 계산에 셸 변수를 사용했습니다.
    • 변수를 정의하고 사용하기 위해 bc의 대화형 모드를 탐색했습니다.
    • 더 유연한 계산을 위해 변수를 활용하는 스크립트를 만들었습니다.
    • 여러 줄의 bc 연산에 "here documents"를 사용하는 방법을 배웠습니다.
  4. 실용적인 응용:

    • 메뉴 인터페이스가 있는 대화형 계산기 스크립트를 구축했습니다.
    • 일반적인 기하학적 계산을 구현했습니다.
    • 이차 공식과 같은 더 복잡한 방정식을 풀었습니다.
    • 배운 모든 개념을 유용한 응용 프로그램으로 결합했습니다.

이러한 기술을 통해 Linux 명령줄에서 수학 연산을 효율적으로 수행하고 스크립트에서 계산을 자동화할 수 있습니다. bc 계산기는 간단한 산술에서 복잡한 수학 공식까지 모든 것을 처리할 수 있는 강력한 도구이므로 Linux 환경에서 작업하는 시스템 관리자, 개발자 및 데이터 분석가에게 필수적인 유틸리티입니다.

Linux 를 계속 사용하면서 bc와 같은 명령줄 도구를 셸 스크립팅과 결합하면 광범위한 문제를 보다 효율적으로 해결하는 데 도움이 될 수 있습니다.