1. 함수와 파라미터
쉘 스크립트는 다른 프로그래밍 언어처럼 함수를 사용하여 코드의 반복을 줄이고 명확성을 높일 수 있습니다. 함수는 특정 작업을 수행하기 위해 정의되며, 필요에 따라 파라미터를 받아 작업을 수행할 수 있습니다.
1.1 쉘 스크립트 내에서 함수 정의 및 호출하기
쉘 스크립트에서 함수는 다음과 같이 정의됩니다
function_name() {
# Function body
command1
command2
...
}
예:
bash
Copy code
greet() {
echo "Hello, $1"
}
greet "Alice"
위의 스크립트를 실행하면 "Hello, Alice"라는 결과가 출력됩니다.
1.2 파라미터 전달 및 사용하기
함수 내부에서는 $1, $2 등의 특수 변수를 사용하여 전달된 인자를 참조할 수 있습니다. $0는 스크립트의 이름이며, 함수 내에서는 함수의 이름을 참조합니다.
sum() {
local result=$(( $1 + $2 ))
echo "The sum is: $result"
}
sum 5 7
위 스크립트는 "The sum is: 12"라는 결과를 출력합니다.
여기서 local 키워드는 변수가 함수 내에서만 사용됨을 나타냅니다. 이를 통해 전역 변수와의 충돌을 방지할 수 있습니다.
1.3 함수의 반환 값
함수는 return 명령어를 사용하여 숫자 값을 반환할 수 있습니다. 그러나 대부분의 경우, 함수의 출력은 echo나 printf와 같은 명령어를 사용하여 표준 출력에 직접 표시됩니다.
calculate() {
local result=$(( $1 * $2 ))
echo $result
}
output=$(calculate 5 3)
echo "The result is: $output"
위 스크립트는 "The result is: 15"라는 결과를 출력합니다.
이처럼 함수와 파라미터를 이용하면 쉘 스크립트 내에서 코드의 반복을 줄이고 효율적으로 로직을 구성할 수 있습니다.
2. 사용자 입력과 출력
리눅스 쉘 스크립트에서 사용자의 입력을 받거나, 사용자에게 정보를 표시할 때의 방법은 중요합니다. 사용자 입력과 출력을 잘 다루면 스크립트의 사용성이 크게 향상됩니다.
2.1 read 명령어로 사용자로부터 입력 받기
read 명령어는 쉘 스크립트에서 사용자 입력을 받기 위한 기본적인 도구입니다. 사용자로부터 입력을 받아 변수에 저장할 수 있습니다.
echo "What is your name?"
read name
echo "Hello, $name"
이 스크립트를 실행하면 사용자에게 이름을 입력하라는 메시지가 표시되고, 사용자의 입력을 name 변수에 저장한 후에 인사 메시지를 출력합니다.
read 명령어는 다양한 옵션을 가지고 있습니다. 예를 들어, -p 옵션을 사용하면 입력 프롬프트를 지정할 수 있습니다:
read -p "Enter your age: " age
echo "You are $age years old."
2.2 출력 포맷과 스타일
echo와 printf 명령어를 사용하여 텍스트를 출력할 수 있습니다. printf는 복잡한 출력 포맷을 다룰 때 특히 유용합니다.
name="Alice"
age=30
printf "%s is %d years old.\n" "$name" "$age"
위 스크립트는 "Alice is 30 years old."라는 결과를 출력합니다.(%s는 string, %d는 integer를 의미합니다.)
또한, 출력의 스타일을 변경하기 위해 ANSI escape 코드를 사용하여 텍스트의 색상이나 스타일을 지정할 수 있습니다.
echo -e "\033[31mThis is red text\033[0m"
위 코드는 빨간색 텍스트를 출력합니다.
사용자의 입력을 제대로 받고, 그에 따른 응답을 명확하게 출력하는 것은 스크립트의 사용성을 향상시키는 중요한 요소입니다.
'프로그래밍 > Linux' 카테고리의 다른 글
[Linux] 쉘 스크립트(Shell script) 4편 - 디버그 모드, 에러메시지 출력 (0) | 2023.08.31 |
---|---|
[Linux] 쉘 스크립트(Shell script) 3편 - 배경 작업 및 작업 제어 (0) | 2023.08.31 |
[Linux] 쉘 스크립트(Shell script) 1편 - 기본, 변수와 환경변수, 조건문과 반복문 (0) | 2023.08.31 |
[Linux] 리눅스 정규 표현식(Regular Expressions) (0) | 2023.08.31 |
[Linux] Bash 쉘 명령어 - 리디렉션(Redirection) (2) | 2023.08.30 |