hyperskill - Functions and arguments 영어 원문
당신은 이미 bash 스크립트가 무엇인지, 어떻게 작성하는지, echo
명령어를 사용하는 법에 대해 배웠습니다.
오늘 우리는 스크립트에서 나중에 수행하기 위한 커맨드 라인 파라미터들을 전달하는 것에 대해 말할 겁니다.
또한, 반복적인 상황들을 자동화시키기 위해서, functions (기능) 을 작성하는 법에 대해서 배울 겁니다.
파라미터(parameters) 와 함께 시작 해 봅시다.
Arguments - 매개변수
매개변수를 사용한다면, 당신은 처리 할 정보를 스크립트로 전달 할 수 있습니다.
스크립트를 실행 할 때, bash shell 은 positional parameters (위치 매개변수) 라 불리는 특별한 변수로 이를 할당합니다.
null 파라미터 $0
은 언제나 스크립트의 이름입니다.
그리고 다음 스크립트에 전달 된 사용자 매개 변수를 따릅니다.
당신이 원하는 만큼 많은 파라미터들이 될 수 있습니다.
예를 들어, personal_data.sh
라는 간단한 스크립트가 있습니다.
이 스크립트는 사람에 대한 이름과 나이의 정보를 수신하며, 콘솔에 출력합니다.
해당 스크립트는 이렇게 생겼습니다 :
#!/usr/bin/env bash
echo "You provided $# facts about yourself!"
echo "Your name is $1"
echo "Your age is $2"
우리의 예제에서는, 두 개의 파라미터를 전달했는데, 이름과 나이입니다.
그러므로, 이 두 파라미터는 각각 $1
과 $2
로 각기 할당되며, 콘솔로부터 순차적으로 읽을 것 입니다.
이러한 위치 매개변수들은 ${<parameter>}
로써 표시되기도 합니다.
예를 들어, 두 개 이상의 심볼을 담고 있는 경우입니다. 예시 : ${123}
$#
변수는 파라미터들의 총 개수를 표시합니다. (위의 경우 2
개의 파라미터가 있습니다.)
또한 우리는 콘솔에 이 숫자를 출력 할 겁니다.
위 스크립트의 결과는 밑과 같습니다 :
$ bash personal_data.sh Amy 26
You provided 2 facts about yourself!
Your name is Amy
Your age is 26
몇몇 케이스에서, 당신은 스크립트에 전달하기 위한 모든 파라미터들을 그룹화 할 필요가 있습니다.
이를 수행하기 위해서, $*
그리고 $@
변수들을 사용 할 수 있습니다.
위의 두 변수는 모든 명령어 라인 파라미터를 담고 있으며,
위치 매개변수를 사용하지 않고 스크립트에 통과한 모든 변수들에 접속 할 수 있게 만들어 줍니다.
$*
변수에는 명령 줄에 단일 "단어" 로 입력 된 모든 매개변수가 포함됩니다.
이는, 당신이 전달시킨 모든 것은 단 하나의 매개변수로 접힌다는 것 입니다.
$*
에 모든 매개변수가 담겼다 --> 단 하나의 매개변수로 접혔다.
$@
변수에서는, 파라미터들이 별도의 "단어" 로 분할됩니다.
각각의 파라미터에 대해 별도의 위치가 있습니다.
좋아요! 이제 당신은 스크립트에 파라미터들을 전달하는 것에 대해 알게 되었습니다.
하지만, 당신이 스크립트의 일부를 다시 사용해야 한다면 어떡하나요?
손으로 계속 치고 있는 것은 지루하며, 시간이 소모되며, 이 상황이 반복됩니다.
당신이 알다시피, 이는 나쁩니다. 따라서, 이 경우 우리는 functions (기능) 이 필요합니다.
Functions - 기능 (펑션)
Functions는 당신이 코드 블록을 한 번 작성하고,
이것이 다시 필요할 때, 간단히 스크립트에서 이를 참조할 수 있습니다.
예제로 가장 간단한 function을 봐 봅시다.
function 은 두 가지 방법의 집합이 될 수 있습니다 :
function function_name {}
혹은 function_name() {}
.
좋아요, 직전에 만든 코드를 향상시켜 봅시다 :
#!/usr/bin/env bash
personal_data() {
echo "You provided $# facts about yourself!"
echo "Your name is $1"
echo "Your age is $2"
}
이제 사용자 경험은 personal_data()
라는 기능으로 분리 될 겁니다.
우리는 이 기능에 밑의 정보를 같은 파일에 추가함으로서 부를 수 있습니다. :
personal_data "Amy" 26
기존 파일
personal_data
를 수정 한 뒤, 맨 밑에 바로 위의 문장을 그대로 적으면 매개변수가 자동으로 전달됩니다.
그러곤 bash를 열고 functions을 부르세요.
참고 할 것은, 콘솔에 파라미터들을 칠 필요가 없다는 건데,
그냥 function과 주어진 매개변수를 지닌 파일이름만이 필요 할 뿐 입니다.
$ bash personal_data.sh
You provided 2 facts about yourself!
Your name is Amy
Your age is 26
멋집니다, 기능이 작동해요!
Comments - 주석
스크립트가 무엇을 하는지 까먹지 않기 위해서, #
를 사용하여 주석을 추가 할 수 있습니다.
예를 들어 # processing the user's data
처럼요.
주석은 간단하게 어떻게 되어가는지 묘사합니다.
또한, 여러 코드가 지금 당장 필요하지 않은 것이 있다면, 주석 처리할 수 있습니다.
예를 들어, # echo "You provided $# facts about yourself!"
.
이번에는 스크립트가 주어진 매개변수의 숫자를 출력하지 못합니다 :
#!usr/bin/env bash
# processing the user's data
personal_data(){
# echo "You provided $# facts about yourself!"
echo "Your name is $1"
echo "Your agae is $2"
}
이러한 주석은 당신과 다른 개발자들이 스크립트를 이해할 수 있게 도우며, 이것이 무엇인지 기억하게 도와줍니다.
Conclusion - 결론
따라서, 우리는 간단한 기능을 만드는 법에 대해 알아냈으며, 콘솔에서 이를 어떻게 호출하는지도 알아냈습니다.
또한 우리는 스크립트에 매개변수들을 전달하는 법과 스크립트가 이를 어떻게 수행하는지에 대해서 알아냈습니다.
지금, 우리가 소망하건대, bash에서 작업하는 것이 더 쉽고 빠르길 바랍니다!
words to remember
repetitive : 반복적인
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Git' 카테고리의 다른 글
Local repository - 로컬 레포지토리 기초 (0) | 2024.05.24 |
---|---|
File descriptors and pipes - 파일 descriptor 와 pipe (1) | 2024.05.23 |
First program in bash - Bash 에서 프로그램 만들어보기 (1) | 2024.05.22 |
Starting with GitHub - 깃허브 시작하기 (0) | 2024.05.20 |
Start with git - git 시작하기 (0) | 2024.05.19 |