Shell 산술 연산

ShellBeginner
지금 연습하기

소개

이 실습에서는 Shell 프로그래밍에서 기본적인 산술 연산을 수행하는 방법을 배웁니다. 과일 바구니의 총비용을 계산하는 간단한 스크립트를 작성하면서 Bash 에서 변수와 산술 표현식을 사용하는 방법을 익히게 됩니다. 이 과정은 초보자를 위해 설계되었으므로 각 단계를 상세히 설명해 드립니다.

이 과정은 단계별 안내를 통해 학습과 실습을 돕는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 과정은 초급 수준이며, 96%의 높은 수료율을 기록하고 있습니다. 또한 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

새로운 Bash 스크립트 생성하기

먼저 새로운 Bash 스크립트 파일을 만드는 것부터 시작해 보겠습니다.

  1. WebIDE 에서 터미널을 엽니다. labex@ubuntu:~/project$와 같은 형태의 명령 프롬프트가 보일 것입니다.

  2. 스크립트는 project 디렉토리에 생성하겠습니다. 기본적으로 이 디렉토리에 위치해 있겠지만, 확실히 하기 위해 cd 명령어를 사용합니다.

    cd ~/project

    이 명령어는 현재 작업 디렉토리를 /home/labex/project로 변경합니다.

  3. 이제 fruit_basket.sh라는 이름의 새 파일을 만듭니다. 빈 파일을 생성할 때는 touch 명령어를 사용합니다.

    touch fruit_basket.sh
  4. WebIDE 에디터에서 fruit_basket.sh 파일을 엽니다. 왼쪽 파일 탐색기에서 파일 이름을 클릭하면 됩니다.

  5. 모든 Bash 스크립트는 "shebang" 라인으로 시작해야 합니다. 이 라인은 시스템에 이 스크립트를 실행할 때 어떤 인터프리터를 사용할지 알려줍니다. 파일의 맨 첫 줄에 다음 내용을 추가하세요.

    #!/bin/bash

    이 줄은 해당 스크립트가 Bash 인터프리터로 실행되어야 함을 명시합니다.

과일 가격 변수 정의하기

스크립트 파일이 준비되었으니, 이제 각 과일과 바구니의 가격을 저장할 변수를 정의해 보겠습니다.

fruit_basket.sh 파일에 다음 내용을 추가하세요.

#!/bin/bash

## 가격 정의
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

작성한 내용의 의미는 다음과 같습니다.

  • Bash 에서는 변수를 사용하기 전에 미리 선언할 필요가 없습니다. 변수 이름에 값을 할당하기만 하면 됩니다.
  • 변수 이름은 대소문자를 구분합니다. 관례적으로 값이 변하지 않는 상수에는 대문자를 주로 사용합니다.
  • 값을 할당할 때 = 기호 주변에 공백이 있어서는 안 됩니다.
  • 이 값들은 센트 (cent) 단위의 비용을 나타냅니다. 예를 들어 COST_PINEAPPLE=50은 파인애플 하나가 50 센트임을 의미합니다.
  • 데이터 타입을 별도로 지정할 필요가 없습니다. Bash 는 기본적으로 이를 문자열로 취급하지만, 산술 연산을 수행할 때는 자동으로 숫자로 처리합니다.

총비용 계산하기

가격 정의가 끝났으므로, 이제 파인애플 1 개, 바나나 2 개, 수박 3 개가 담긴 과일 바구니의 총비용을 계산해 보겠습니다.

fruit_basket.sh 파일에 다음 줄을 추가하세요.

#!/bin/bash

## 가격 정의
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## 총비용 계산
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

새로 추가한 줄을 살펴봅시다.

  • $(( ))는 Bash 에서 산술 연산을 수행하기 위한 문법입니다. 이 이중 괄호 안에 있는 모든 내용은 산술 표현식으로 처리됩니다.
  • 산술 표현식 내부에서는 변수 이름 앞에 $ 기호를 붙이지 않아도 됩니다.
  • 다음과 같은 여러 연산을 수행하고 있습니다.
    • COST_PINEAPPLE: 파인애플 1 개의 가격
    • (COST_BANANA * 2): 바나나 2 개의 가격
    • (COST_WATERMELON * 3): 수박 3 개의 가격
    • COST_BASKET: 바구니 자체의 가격
  • 이 값들이 모두 더해져 그 결과가 TOTAL 변수에 저장됩니다.

참고: Bash 는 정수 산술 연산만 지원합니다. 만약 달러와 센트 사이의 소수점 계산이 필요하다면 bc와 같은 별도의 도구를 사용해야 합니다.

총비용 출력하기

계산 결과를 확인하기 위해 총비용을 화면에 출력해야 합니다. fruit_basket.sh 파일에 다음 내용을 추가하세요.

#!/bin/bash

## 가격 정의
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## 총비용 계산
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

## 총비용 출력
echo "Total Cost is $TOTAL cents"

새로 추가한 줄의 의미는 다음과 같습니다.

  • echo는 터미널에 텍스트를 출력하는 명령어입니다.
  • 따옴표 안의 텍스트는 그대로 출력되지만, $TOTAL 부분은 예외입니다.
  • 문자열 내부에서 변수 이름 앞에 $가 붙으면, Bash 는 이를 해당 변수의 실제 값으로 교체합니다. 이를 변수 확장 (variable expansion) 이라고 합니다.
  • 따라서 TOTAL 값이 128 이라면, 출력 결과는 "Total Cost is 128 cents"가 됩니다.

스크립트 실행 권한 부여 및 실행하기

스크립트 작성이 완료되었습니다. 이제 이 파일을 실행 가능한 상태로 만든 뒤 실행해 보겠습니다.

  1. 터미널에서 chmod 명령어를 사용하여 스크립트에 실행 권한을 부여합니다.

    chmod +x ~/project/fruit_basket.sh

    이 명령어는 파일의 모드를 변경하여 사용자에게 실행 (x) 권한을 추가합니다.

  2. 이제 스크립트를 실행합니다.

    ~/project/fruit_basket.sh

    이 명령어는 Bash 에게 우리가 만든 스크립트를 실행하도록 지시합니다. ~/project/ 부분은 스크립트가 위치한 경로를 나타냅니다.

다음과 같은 출력 결과가 나타나야 합니다.

Total Cost is 128 cents

이 결과는 과일 바구니 (파인애플 1 개, 바나나 2 개, 수박 3 개, 바구니 포함) 의 총비용이 128 센트임을 보여줍니다.

요약

이 실습에서는 Shell 프로그래밍에서 기본 연산자를 사용하여 산술 연산을 수행하는 방법을 배웠습니다. 개별 가격에 대한 변수를 정의하고 산술 표현식을 사용하여 총합을 구하는 Bash 스크립트를 직접 작성해 보았습니다. 또한 스크립트에 실행 권한을 부여하고 명령줄에서 실행하는 방법도 익혔습니다.

기억해야 할 주요 사항은 다음과 같습니다.

  1. Bash 스크립트는 shebang 라인 (#!/bin/bash) 으로 시작합니다.
  2. Bash 에서 변수를 할당할 때는 = 기호 주변에 공백을 두지 않습니다.
  3. 산술 연산은 $(( )) 내부에서 수행됩니다.
  4. 결과를 출력할 때는 echo 명령어를 사용합니다.
  5. 스크립트를 실행하기 전에는 chmod +x 명령어로 실행 권한을 부여해야 합니다.

이러한 기술은 더 복잡한 쉘 스크립팅 작업을 위한 기초가 되며, 스크립트 내에서 계산이 필요한 다양한 상황에 적용할 수 있습니다.