Skip to Content
bash Cookbook, 제 2판
book

bash Cookbook, 제 2판

by Carl Albing, JP Vossen
May 2025
Beginner to intermediate
726 pages
9h 39m
Korean
O'Reilly Media, Inc.
Book available
Content preview from bash Cookbook, 제 2판

6장. 셸 논리 및 산술

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

오리지널 본 셸에 비해 최신 버전의 bash가 크게 개선된 점 중 하나는 연산 영역입니다. 초기 버전의 셸에는 연산 기능이 내장되어 있지 않았기 때문에 변수에 1을 더하기만 해도 별도의 실행 파일을 호출해야 했습니다. 어떻게 보면 셸이 그 끔찍한 연산 메커니즘에도 불구하고 수많은 작업에 사용될 수 있었다는 것은 셸이 얼마나 유용하고 강력했는지에 대한 찬사입니다(그리고 지금도 그렇죠). 하지만 얼마 지나지 않아 반복적인 작업을 자동화하는 데 유용한 단순 계산을 위해서는 간단하고 직관적인 구문이 필요하다는 것이 분명해졌습니다. 원래 본 셸에는 이러한 기능이 없었기 때문에 숫자 변수를 포함한 셸 프로그래밍을 위해 C와 유사한 구문을 도입한 C셸(csh)이 성공할 수 있었습니다. 그때도 그랬고 지금도 마찬가지입니다. 한동안 bash에서 셸 연산을 살펴보지 않았다면 큰 놀라움을 느낄 것입니다.

연산 외에도 모든 프로그래머에게 익숙한 제어 구조가 있습니다. 의사 결정을 위한 if/then/else 구조체와 while 루프 및 for 루프가 있지만, 이 모든 구조체에는 몇 가지 bash 특유의 특징이 있습니다. 문자열 패턴 매칭을 통해 매우 강력한 case 문과 select 이라는 이상한 구조가 있습니다. 이러한 기능에 대해 설명한 후, 이를 사용하여 간단한 명령줄 계산기 두 개를 만드는 것으로 이 장을 마무리하겠습니다.

6.1 셸 스크립트에서 연산 수행하기

문제

셸 스크립트에서 간단한 연산을 수행해야 합니다.

솔루션

정수 산술 표현식에는 $(( )) 또는 let 을 사용합니다. 예를 들어

COUNT=$((COUNT + 5 + MAX * 2))
let COUNT+='5+MAX*2'

토론

정수 연산을 사용하는 한 $(( )) 안에 있는 모든 표준(즉, C와 같은) 연산자를 산술 표현식에 사용할 수 있습니다. 추가 연산자도 하나 더 있습니다. MAX=$((2**8)) 에서와 같이 256을 산출하는 경우와 같이 ** 을 사용하여 거듭제곱할 수 있습니다.

공백은 필요하지 않으며 $(( )) 표현식 내에서 연산자와 인수 주변( ** 반드시 함께 있어야 함)에 공백을 넣는 것도 금지되어 있지 않습니다. 그러나 bash 변수 할당과 마찬가지로 등호 기호 주변에는 공백이 없어야 합니다. 또한 let 문은 bash 내장형이며 인수가 단어 확장되므로 let 표현식은 반드시 인용해야 합니다.

경고

과제의 등호 주위에 공백을 넣지 마세요! 작성하는 경우:

COUNT  =  $((COUNT+5)) # not what you think!

를 입력하면 bash는 첫 번째 인수가 등호이고 두 번째 인수가 $COUNT 값에 5를 더하여 얻은 숫자인 COUNT라는 프로그램을 실행하려고 시도합니다. 기억하세요: 할당 기호 주위에 공백을 두지 마세요!

이러한 표현식의 또 다른 특이한 점은 일반적으로 셸 변수 앞에 값을 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Raspberry Pi Hacks

Raspberry Pi Hacks

Ruth Suehle, Tom Callaway

Publisher Resources

ISBN: 9798341659766Supplemental Content