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판

13장. 구문 분석 및 유사 작업

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

이 장은 프로그래머라면 알아볼 수 있는 작업들로 구성되어 있습니다. 여기서의 레시피가 이 책의 다른 bash 스크립트 레시피보다 반드시 고급은 아니지만, 프로그래머가 아니라면 이러한 작업이 모호하거나 bash 사용과 무관하게 보일 수 있습니다. 이러한 상황에 처하게 되는 이유에 대해서는 자세히 설명하지 않겠습니다(프로그래머라면 전부는 아니더라도 일부는 알 수 있을 것입니다). 하지만 이러한 상황을 인지하지 못하더라도 bash에 대해 배울 수 있는 내용을 읽어보시기 바랍니다.

이 장의 일부 레시피에는 명령줄 인수의 구문 분석이 포함되어 있습니다. 셸 스크립트에서 옵션을 지정하는 일반적인 방법은 앞의 마이너스 기호와 한 글자를 사용하는 것입니다. 예를 들어, 스크립트에서 더 적은 수의 메시지를 제공하는 옵션은 -q 을 조용한 모드를 의미하는 플래그로 사용할 수 있습니다. 때로는 옵션에 인수가 필요할 수도 있습니다. 예를 들어 사용자 아이디를 지정해야 하는 사용자 옵션의 경우 -u 뒤에 사용자 아이디를 사용할 수 있습니다. 이 구분은 이 장의 첫 번째 레시피에서 명확하게 설명합니다.

일부 Linux 명령은 긴 형식의 옵션도 허용합니다. 앞의 짧은 형식의 -u 옵션 예제를 사용하면 명령이 다음과 같은 긴 형식도 지원할 수 있습니다. --user=username. 여기서는 긴 형식의 옵션은 표시하지 않지만 일부 기법에는 사용할 수 있습니다. 긴 인수를 구문 분석하는 가장 좋은 방법은 getopt (참고: s 없음) 명령을 사용하는 것입니다.

13.1 셸 스크립트의 인수 구문 분석하기

문제

셸 스크립트에 사용자가 동작을 변경하는 데 사용할 수 있는 몇 가지 옵션과 플래그를 추가하고 싶을 수 있습니다. ${} 을 사용하여 제공된 인수의 수를 알려주고 ${1:0:1} 을 사용하여 첫 번째 인수의 첫 번째 문자가 마이너스 기호인지 테스트하여 직접 구문 분석을 수행할 수 있습니다. 하지만 어떤 옵션인지, 인수가 필요한지 확인하려면 if/then 또는 case 로직이 필요합니다. 사용자가 필수 인수를 제공하지 않거나 두 가지 옵션이 결합된 스크립트(예: -ab)를 호출하면 어떻게 하나요? 그것도 파싱할까요? 셸 스크립트에서 옵션을 구문 분석해야 하는 경우는 흔한 상황입니다. 많은 스크립트에 옵션이 있습니다. 이 작업을 수행하는 더 표준적인 방법이 있지 않나요?

솔루션

bash의기본 제공 getopts 명령을 사용하여 도움말 옵션을 구문 분석합니다.

예제 13-1은 주로 getopts에 대한 매뉴얼 페이지의 예제를 기반으로 합니다.

예제 13-1. ch13/getopts_example
#!/usr/bin/env bash
# cookbook filename: getopts_example
#
# using getopts
#
aflag=
bflag=
while getopts 'ab:'
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