본문 바로가기
프로그래밍/Linux

[Linux] 쉘 스크립트(Shell script) 2편 - 함수와 파라미터, 사용자 입력과 출력

by HI_Ai 2023. 8. 31.
반응형

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"

위 코드는 빨간색 텍스트를 출력합니다.

사용자의 입력을 제대로 받고, 그에 따른 응답을 명확하게 출력하는 것은 스크립트의 사용성을 향상시키는 중요한 요소입니다.

반응형