[hyperskill - Arithmetic operations 영어 원문
Bash 는 우리 컴퓨터의 운영제체에 있어 가득찬 잠재력을 해방시키게 도와주는 유명한 도구입니다.
이번 주제에서, 우리는 수학적인 연산을 수행하는 방법을 배울 겁니다.
간단한 수학 예제를 수행하는 것은 가득찬 잠재력이 아니지만,
그럼에도 불구하고 bash 가 제공하는 가득찬 활용 가능성을 단계씩 나아가는 것은 중요합니다.
여기, 우리는 간단히 연산을 만들어 사용할 수 있는 명령어들을 살펴 보며,
수학적 계산들을 수행할 수 있게 도와주는 수학 연산들을 볼 겁니다.
또한 우리는 수학 연산들과 작업 할 때, 기능적으로 확장하도록 제공하는 명령어 도구와 작업 할 겁니다.
Arithmetic operators - 수학 연산자
우리는 수학 연산들을 실행하기 위해서 bash 에서 다중 연산을 사용 할 수 있습니다.
하지만 일련의 명령을 사용하는 것을 제외하고,
우리가 제공하는 숫자들과 연산자들과 함께 수행하길 원하는 것을 결정 할 수는 없습니다.
이에 대해서, bash 는 여러 개의 명령어를 가지고 있습니다.
우리는 두 개의 괄호를 사용 할 겁니다. 즉, (())
.
이는 우리의 목표를 달성하는데 도와줍니다.
두 개의 괄호를 사용하는 것은 간단할 뿐만 아니라, 다른 선택지들보다 더 유연합니다.
우리는 간단히 두 개의 괄호 사이에 우리의 인수를 집어넣고,
연산을 실행하기 위해서 $
기호를 앞에 사용할 겁니다.
bash 에서 가능한 연산자들을 살펴보고, 각각의 예제들을 봅시다 :
Operator | Function | Description | Example | Result |
---|---|---|---|---|
+ | Addition(더하기) | Add two operands 두 피연산자 더하기 |
$((10+3)) | 13 |
- | Subtraction(빼기) | Subtract two operands 두 피연산자 빼기 |
$((10-3)) | 7 |
* | Multiplication(곱하기) | Multiply two operands 두 피연산자 곱하기 |
$((10*3)) | 30 |
/ | Division(나누기) | Return Quotient after division 나눈 후 몫 반환 |
$((10/3)) | 3 |
% | Modulo(나머지) | Return remainder after division 나눈 후 나머지 반환 |
$(10%3)) | 1 |
** | Exponential(제곱) | Raise the first operand to the power of the second 첫번째 피연산자에 대해 두번째 피연산자는 제곱을 한다. |
$((10**3)) | 1000 |
이제 이러한 연산자들을 bash 에서 구현하고, 우리 스스로 결과를 확인 해 봅시다.
예를 들어, 우리의 bash 명령어들을 실행하기 위해 maths.sh
라는 스크립트 파일을 생성한다고 가정 해 봅시다.
#!usr/bin/env/bash
#Executing simple arithmetic operations
echo $(( 10*5+15 ))
echo $(( 40/6 ))
bash maths.sh
라는 명령어를 사용하여 위의 스크립트를 실행하여,
우리는 이러한 결과물을 얻을 수 있습니다 :
65
6
이제, 우리가 변수와 사용 할 수 있는 몇가지 또다른 연산자들을 살펴 봅시다.
Operations with a variable - 변수와의 연산자
또한 우리는 상수 피연산자로 수학 연산자를 실행하기 위한 능력을 가지고 있습니다.
x
라는 피연산자가 있다고 가정하고, 이 피연산자는 10
과 동일하다고 가정 해 봅시다.
Operator | Function | Description | Example | Result |
---|---|---|---|---|
+= | Addition by constant 상수로 더하기 |
Add two operands 피연산자 두개 더하기 |
$((x+=3)) | 13 |
-= | Subtraction by constant 상수로 빼기 |
Subtract two operands 피연산자 두개 더하기 |
$((x-=3)) | 7 |
*= | Multiplication by constant 상수로 곱하기 |
Multiply two operands 두 피연산자 곱하기 |
$((x*=3)) | 30 |
/= | Division by constant 상수로 나누기 |
Return Quotient after division 나눈 후 몫 반환 |
$((x/=3)) | 3 |
%= | Modulo by constant 상수로 나머지 구하기 |
Return remainder after division 나눈 후 나머지 반환 |
$((x%=3) | 1 |
처음 잠깐동안에는, 이러한 연산자들은 보기에 기본 연산자와 동일하거나, 원래 연산자와 비교했을 때 쓸모없어 보입니다.
하지만, 이는 루프(반복문)을 작동할 때 특히 유용 할 수 있습니다.
이러한 기본적인 연산자들과 별개로,
우리는 단일 피연산자로 1을 증가하거나 감소 할 수 있는 능력을 가지고 있습니다.
이를 수행하기 위해서, 우리는 ++
과 --
를 사용합니다.
이러한 연산자를 피연산자의 직전 혹은 이후에 사용하는 것은,
사전-증가/감소 혹은 사후-증가/감소 로 참조됩니다.
++x
: 사전 증가x--
: 사후 감소
이러한 연산자들을 사용하는 동안, 이들은 오로지 변수들에만 구현될 수 있다는 것을 조심하세요.
#!usr/bin/env/bash
# Assigning value to variables - 변수에 값을 할당
val1=$(( 10*3-15 ))
echo $val1
# Arithmetic operations using constants - 상수를 사용하는 수학 연산
echo $(( val1*= 3 ))
우리는 변수에 값을 할당하는 방법으로,
val=$(( 2 ))
그리고 $(( val = 2 ))
를 사용할 수 있습니다.
위의 스크립트를 실행하면 이와 같은 결과물이 제공됩니다 :
15
45
모든 것이 잘 작동하는 것으로 보이지만, 정확하게 나누기를 수행하는 능력은 제외합니다.
echo $(( 40/6 ))
라는 문장은 6.666....7 대신에 6 을 제공합니다.
하지만, 이러한 문제를 극복하는 우리가 사용 할 수 있는 해결 방법이 있습니다.
그리고 그 과정에서 또다른 도움되는 기능들이 가동됩니다.
The bc utility - bc 유틸리티
위의 예제들로부터 당신이 알아차린 것 처럼, bash 는 수학에 본질적으로 좋지 않습니다.
우리는 나누기를 하는 동안 소수점 숫자들을 생산할 수 없습니다.
그리고 위에 설명된 기본적인 연산자들은 bash 를 사용하기에 정당하지 않습니다.
하지만, bash 는 비장의 카드를 가지고 있습니다.
바로 bc utility 입니다.
이는 Basic Calculator 에 대한 약자이며,
우리의 bash 명령어 줄을 본격적인 계산기로 변하도록 도와줍니다.
bc
유틸리티는 게다가 이전의 연산자들과 작업할 수 있는 능력을 제공합니다 :
- Relational operators : 관계 연산자
- Logical or Boolean operators : 논리적 혹은 불린 연산자
- Math functions : 수학 함수
- Conditional statements : 조건문
- Iterative statements : 반복문
우리는 <<<
는 를 사용 할 것이며, 즉, 이는 here-string 을 의미하며, 이는 우리의 명령어를 단순화합니다.
우리가 사용할 구문은 command argument <<< "input"
입니다.
몇 가지 관계, 논리 연산자들을 사용하며 시작해 봅시다.
Relational and logical operations - 관계 논리 연산자
#!usr/bin/env/bash
# Less than operator
bc <<< "10 < 1"
# Is not equal to operator
bc <<< "10 != 11"
이 스크립트는 이러한 결과물을 제공합니다 :
0
1
또 다른 관계 연산자들은 >
, >=
, <=
, 그리고 ==
가 있습니다.
이제 논리 연산자들을 살펴 봅시다.
bc
유틸리티는 세 가지 논리 연산자들을 제공합니다 : &&
, ||
, !
우리에게 주어진 결과는 0
혹은 1
입니다.
이는 false
혹은 true
각각 표시합니다.
연산자들은 이러한 방식으로 작동합니다 :
Operator | Example | Evaluation logic | Result |
---|---|---|---|
&& |
bc <<< "5&&6" |
1; 모든 피연산자가 0 이 아니라면. |
1 |
|| |
bc <<< "5||6" |
1; 하나의 피연산자라도 0이 아니라면. |
1 |
! |
bc << "!5" |
1; 만약 피연산자가 0 이라면. |
0 |
bc
유틸리티에 의해 제공되는 또다른 모든 기능들 중에서,
실제로 도움이 되는 것은 수학 함수에 대한 지원입니다.
이제, bc
의 수학 라이브러리를 살펴 봅시다.
Math library - 수학 라이브러리
수학 라이브러리 기능을 사용하기 위해서, 우리는 특별한 옵션을 사용해야 합니다.
-l
옵션은 표준 수학 라이브러리를 가동합니다.
이는 sine(사인), cosine(코사인), inverse tangents(탄젠트 역함수),
자연로그, 지수 등등의 함수들 과 같은 기능을 사용 할 수 있게 해 줍니다.
또한 우리는 소수점에서 실수의 소수점 숫자를 조절 할 수 있습니다.
밑의 테이블은 몇 가지 중요한 수학 함수들에 대한 중요한 세부사항을 제공합니다.
Math function | Explanation | Example |
---|---|---|
sine | 라디안 값을 피연산자로서 사용하며, 이에 대한 sine 값을 제공합니다. |
bc -l <<< "s(30)" |
cosine | 라디안 값을 피연산자로서 사용하며, 이에 대한 cosine 값을 제공합니다. |
bc -l <<< "c(30)" |
tan^-1 | 라디안 값에 대한 역탄젠트 값을 제공합니다. | bc -l <<< "a(1)" |
ln | 자연로그를 제공합니다. | bc -l <<< "e(1)" |
e | 피연산자는 오일러의 숫자 e 의 제곱이 됩니다. | bc -l <<< "e(1)" |
√ | 루트의 값을 반환합니다. | bc -l <<< "sqrt(9)" |
bash 에서 표준 수학 라이브러리를 활용하는 몇 가지 예제들을 살펴 봅시다.
#!usr/bin/env/bash
# Arithmetic operation that returns a floating-point number
# 소수점을 반환하는 수학적 연산자
bc -l <<< "(1 + 2)/7 * 2 ** 2"
# Using sine and cosine functions
# 사인과 코사인을 사용하는 함수
bc -l <<< "s(1) + c(1)"
# Using logarithmic and exponential functions
# 자연로그와 지수를 사용하는 함수
bc -l <<< "e(1) + l(5)"
# Finding the square root of a number
bc -l <<< "sqrt(27)"
위의 스크립트는 이와 같은 결과물을 제공합니다 :
1.71428571428571428568
1.38177329067603622405
4.32771974089314560996
5.19615242270663188058
bc 유틸리티는 자연수 이후의 소수점 숫자를 조정할 수 있는 기능과,
진수를 변경할 수 있는 기능을 제공합니다.
우리는 기존의 진수를 필요로 하며 : ibase
결과로 나올 진수를 필요로 합니다 : obase
그리고 피연산자가 들어갑니다.
ibase
와 obase
의 기본값은 10
입니다. : 우리는 10진수를 사용하므로..
이러한 인수들을 분리하기 위해서, 우리는 ;
를 사용합니다.
#!/usr/bin/env bash
# Converting binary 10 to octal
# 2진수 10에서 8진수로 변경
bc -l <<< "ibase=2; obase=8; 10"
# Converting decimal 5 to binary
# 10진수 5에서 2진수로 변경하기
bc -l <<< "obase=2; 5"
# Using scale to control length of floating-point numbers
# 소수점 숫자의 길이를 조절하기
bc -l <<< "scale=3; a(30)"
우리는 이와 같은 결과물을 얻습니다 :
2
101
1.537
Conclusion - 결론
이번 주제에서, 우리는 수학 연산자를 사용하는 방법과 bc
유틸리티로 bash 를 사용하는 방법을 살펴보았습니다.
이제 당신은 이러한 것을 알 수 있습니다 :
- bash dptj rkseksgks tngkr dustkswkfmf tlfgodgkrl
bc
유틸리티로 작업하기bc
유틸리티에 의해 관계, 논리 연산자들을 활용하기- 복잡한 수학 연산자를 수행하기 위해서, 다양한 수학 기능을 사용하기
words to remember
unleash : 해방하다
Apart : 따로, 떨어져서, 산산이, 별개로
workaround : 해결 방법
inherently : 본질적으로
trump card up its sleeve : 비장의 카드
fledged : 본격적인
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Best practices for bash scripts - bash 스크립트를 연습하는 최고의 방법 (1) | 2024.08.13 |
---|---|
Case statement and argument parsing - 케이스 문법과 인수 파싱(shift) (0) | 2024.08.11 |
What is MongoDB - MongoDB 기초 및 설치 (0) | 2024.08.10 |
NoSQL - NoSQL 데이터베이스 (1) | 2024.08.08 |
What is an HTTP server - HTTP 서버란? (0) | 2024.08.07 |