스크립트 인수와 옵션($@, $#, 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 반복문(for, while)
- Bash 스크립트의 함수
- 스크립트 인수와 옵션($@, $#, getopts)
- case 문과 패턴 매칭