0Pricing
DevOps Bootcamp · 강의

스크립트 인수와 옵션($@, $#, getopts)

스크립트에 인수를 전달하고 특수 변수와 'getopts'를 사용해 명령줄 옵션을 분석하는 방법을 배웁니다.

스크립트 인수와 옵션($@, $#, getopts)은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

스크립트 인수: 왜 사용하나요?

ls -l이나 cp file1 file2 같은 명령을 사용해 본 적이 있으신가요? -l, file1, file2는 모두 인수입니다! 인수는 명령에 수행할 작업이나 작업 대상을 알려 줍니다.

Bash 스크립팅에서 인수를 사용하면 스크립트를 유연하게 만들 수 있습니다. 값을 스크립트에 직접 지정하는 대신, 실행할 때 명령줄에서 직접 입력을 받을 수 있습니다.

위치 인수에 접근하기

인수와 함께 스크립트를 실행하면 Bash는 인수를 위치 매개변수라는 특수 변수에 자동으로 할당합니다.

  • 첫 번째 인수는 $1입니다.
  • 두 번째 인수는 $2입니다.
  • 이런 방식으로 $9까지 이어집니다.

9보다 큰 위치의 인수에는 ${10}, ${11} 등과 같이 중괄호를 사용합니다. 이러한 변수에는 스크립트에 전달된 값이 저장됩니다.

실습: 위치 인수

스크립트에서 이러한 인수에 접근하는 방법을 살펴보겠습니다. 다음 내용을 greet.sh로 저장하고 ./greet.sh Alice Bob으로 실행하십시오.

#!/bin/bash

echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"

`$0` 및 `$#`: 스크립트 정보

Bash는 스크립트 자체와 해당 인수에 관한 정보를 제공하는 몇 가지 특수 변수를 더 제공합니다.

  • $0: 현재 실행 중인 스크립트의 이름을 저장합니다. 오류 메시지나 기록에 유용합니다.
  • $#: 스크립트에 전달된 위치 인수의 전체 개수를 저장합니다.

이러한 변수를 사용하면 스크립트를 더 견고하고 사용자 친화적으로 만들 수 있습니다.

실습: `$0` 및 `$#`

인수 개수를 다르게 하여 이 스크립트를 실행해 보십시오. 예를 들어 ./info.sh one two three 또는 인수 없이 ./info.sh를 실행할 수 있습니다.

#!/bin/bash

echo "Script name: $0"
echo "Number of arguments received: $#"

`$@` 대 `$*`: 모든 인수

때로는 모든 인수를 한 번에 참조해야 합니다. Bash에서는 두 가지 방법을 제공합니다.

  • $@: 인수를 각각 분리하여 확장합니다. 큰따옴표로 묶은 경우("$@") 공백이 포함되어 있어도 각 인수가 서로 다른 단어로 유지됩니다. 반복문에서는 일반적으로 이 방법을 선호합니다.
  • $*: 모든 인수를 하나의 문자열로 확장합니다. 큰따옴표로 묶으면("$*") 모든 인수가 하나의 단어로 결합되며, IFS(내부 필드 구분자)의 첫 번째 문자(일반적으로 공백)로 구분됩니다.

인수를 순회할 때 공백을 보존하려면 항상 "$@"을 사용하십시오!

실습: `"$@"`으로 반복하기

이 스크립트는 "$@"이 공백이 포함된 인수를 올바르게 처리하는 방법을 보여 줍니다. 다음과 같이 실행하십시오. ./loop_args.sh hello "world wide" web

#!/bin/bash

echo "Processing arguments with \"$@\":"
for arg in "$@"; do
  echo "  Argument: [$arg]"
done

echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
  echo "  Argument: [$arg]"
done

옵션: 위치 인수를 넘어

위치 인수는 간단한 경우에 유용하지만, 스크립트에 자세한 출력을 위한 -v나 파일을 지정하는 -f filename처럼 선택적 플래그 또는 이름이 지정된 매개변수가 필요하다면 어떻게 해야 할까요?

이때 명령줄 옵션을 사용합니다. 명령줄 옵션을 사용하면 사용자가 설정을 원하는 순서로 지정할 수 있으므로 스크립트가 더 유연하고 사용자 친화적으로 바뀝니다.

Bash는 이러한 유형의 옵션을 분석하기 위한 getopts 명령을 제공합니다.

`getopts` 문법: `optstring`

getopts의 기본 문법은 다음과 같습니다. getopts optstring variable

  • optstring: 유효한 옵션 문자로 이루어진 문자열입니다. 옵션에 인수가 필요한 경우(예: -f filename) 해당 문자 뒤에 콜론을 붙입니다(예: f:).
  • variable: getopts가 현재 처리 중인 옵션 문자(예: opt)를 저장할 변수 이름입니다.

getopts는 옵션 인수에는 OPTARG를 설정하고, 다음 인수의 색인에는 OPTIND를 설정합니다.

실습: 기본 `getopts`

이 스크립트는 -v(자세한 출력) 및 -f(파일) 옵션을 처리합니다. 다음과 같이 실행해 보십시오. ./options.sh -v -f mydata.txt -x 또는 ./options.sh -vf mydata.txt

#!/bin/bash

while getopts "vf:" opt; do
  case $opt in
    v)
      echo "Verbose mode enabled."
      ;;
    f)
      echo "File specified: $OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

빠른 확인: 인수 변수

다음 스크립트와 실행 방식을 살펴보십시오.

#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
  echo "Arg: $arg"
done

다음과 같이 실행한다면: ./myscript.sh "Hello World" 123

출력 결과는 어떻게 될까요?

복습: 인수 및 옵션

훌륭합니다! Bash 스크립트를 훨씬 더 다양하게 만드는 방법을 학습하셨습니다.

  • 위치 인수: $1, $2 등을 사용하여 인수에 직접 접근합니다.
  • 특수 변수: 스크립트 이름에는 $0, 인수 개수에는 $#, 모든 인수를 안전하게 순회할 때는 "$@"을 사용합니다.
  • 명령줄 옵션: getopts를 사용하여 이름이 지정된 옵션(예: -v)과 해당 인수(-f filename)를 분석하면 스크립트를 더 견고하고 사용자 친화적으로 만들 수 있습니다.

직접 작성하는 스크립트에서 이러한 기능을 연습하여 강력하고 유연한 명령줄 도구를 만들어 보십시오!

자주 묻는 질문

“스크립트 인수와 옵션($@, $#, getopts)” 강의는 무료인가요?

네 — “스크립트 인수와 옵션($@, $#, getopts)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“스크립트 인수와 옵션($@, $#, getopts)”에서 뭘 배우나요?

스크립트에 인수를 전달하고 특수 변수와 'getopts'를 사용해 명령줄 옵션을 분석하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“스크립트 인수와 옵션($@, $#, getopts)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 반복문(for, while)
  2. Bash 스크립트의 함수
  3. 스크립트 인수와 옵션($@, $#, getopts)
  4. case 문과 패턴 매칭
← DevOps Bootcamp(으)로 돌아가기