Unix / Linux - Shell Functions
안녕하세요, 열망하는 프로그래머 여러분! 셸 함수의 세상으로 여러분을 안내할 수 있어 기쁩니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 이 흥미로운 주제를 안내해 드리게 되어 설레습니다. 프로그래밍에 처음이라고 걱정하지 마세요 - 기본에서 시작하여 차례대로 올라갑니다. 시작해 보겠습니다!
셸 함수는 무엇인가요?
함수를 만들기 전에, 먼저 그것이 무엇인지 이해해 보겠습니다. 함수는 스크립트 속 작은 도우미라고 생각해 보세요. 주 프로그램 내에 특정 작업을 수행하는 미니 프로그램입니다. 친구 중에 커피를 잘 만드는 사람이 있다면, 스크립트에서 특정 작업에 능숙한 함수를 만들 수 있습니다.
함수 만들기
함수를 만드는 것은 컴퓨터에게 새로운 기술을 가르치는 것과 같습니다. 다음은 기본 구조입니다:
function_name() {
commands
}
간단한 인사 함수를 만들어 보겠습니다:
say_hello() {
echo "Hello, wonderful world!"
}
이 함수를 사용하려면 이름으로 호출합니다:
say_hello
실행하면 다음과 같은 결과를 보게 됩니다:
Hello, wonderful world!
이게 멋있습니다! 우리는 컴퓨터를 인사하게 가르쳤습니다!
함수에 매개변수 전달하기
이제 함수를 좀 더 지능적으로 만들어 보겠습니다. 정보를 함수에 전달할 수 있습니다. 친구에게 커피를 어떻게 좋아하는지 말하는 것과 같습니다.
say_hello
함수를 수정하여 특정 사람을 인사하게 만들어 보겠습니다:
say_hello() {
echo "Hello, $1! How are you today?"
}
여기서 $1
은 함수에 전달된 첫 번째 매개변수를 나타냅니다. 시도해 보겠습니다:
say_hello Alice
출력 결과:
Hello, Alice! How are you today?
여러 개의 매개변수를 전달할 수도 있습니다:
greet() {
echo "Hello, $1! The weather is $2 today."
}
greet Alice sunny
출력 결과:
Hello, Alice! The weather is sunny today.
함수에서 값 반환하기
셸 스크립팅에서 함수는 전통적인 의미에서 값을 반환하지 않습니다. 대신 결과를 echo하거나 전역 변수를 설정할 수 있습니다. 두 가지 방법을 모두 보겠습니다:
echo를 사용하여:
get_square() {
echo $(($1 * $1))
}
result=$(get_square 5)
echo "The square of 5 is $result"
출력 결과:
The square of 5 is 25
전역 변수를 사용하여:
get_square() {
square=$(($1 * $1))
}
get_square 6
echo "The square of 6 is $square"
출력 결과:
The square of 6 is 36
함수 내 함수
이야기 속에 이야기가 있는 것처럼, 함수 내에 함수를 가질 수 있습니다. 이를 중첩이라고 합니다. 예제를 보겠습니다:
outer_function() {
echo "This is the outer function"
inner_function() {
echo "This is the inner function"
}
inner_function
}
outer_function
출력 결과:
This is the outer function
This is the inner function
프롬프트에서 함수 호출하기
프롬프트에서 함수를 정의하고 호출할 수도 있습니다. 이는 커스텀 명령을 만드는 데 특히 유용합니다. 다음과 같이 합니다:
- 터미널을 엽니다.
- 함수를 정의합니다:
greet() { echo "Hello, $1!"; }
- 이제 사용할 수 있습니다:
greet World
출력 결과:
Hello, World!
기억하세요, 이 함수는 현재 터미널 세션 동안만 유효합니다. 영구적으로 사용하고 싶다면, 셸 설정 파일(예: .bashrc
또는 .zshrc
)에 추가해야 합니다.
일반 셸 함수 방법
다음은 셸 함수에서 일반적으로 사용되는 몇 가지 방법입니다:
방법 | 설명 | 예제 |
---|---|---|
function_name() |
함수 정의 | greet() { echo "Hello!"; } |
$1, $2, ... |
함수 매개변수 접근 | echo "Hello, $1!" |
$# |
매개변수 수 반환 | echo "Number of parameters: $#" |
$@ |
모든 매개변수를 별도의 단어로 반환 | for param in "$@"; do echo $param; done |
$* |
모든 매개변수를 단일 단어로 반환 | echo "All parameters: $*" |
local |
지역 변수 선언 | local name="Alice" |
return |
함수에서 종료 | return 0 |
기억하세요, 연습이 완벽을 만듭니다! 이 함수들을 실험하고 자신만의 것을 만들어 보세요. 깨달을 때까지 - 모든 전문가는 초보자였습니다. 행복하게 스크립팅하세요!
Credits: Image by storyset