소개
이 포괄적인 튜토리얼은 Bash 함수 반환 값을 탐구하여 Bash 스크립팅에서 함수를 효과적으로 사용하기 위한 필수 지식과 기술을 제공합니다. 셸 스크립팅을 처음 접하거나 기술을 향상시키려는 경우, 이 가이드는 함수 반환 값을 정의, 호출 및 처리하는 방법에 대한 확실한 이해를 제공합니다. 이러한 기술을 통해 다양한 자동화 작업에 더 강력하고 유연한 셸 스크립트를 작성할 수 있습니다.
첫 번째 Bash 함수 만들기
Bash 함수는 스크립트를 더 잘 구성하는 데 도움이 되는 재사용 가능한 코드 블록입니다. 반환 값을 살펴보기 전에 먼저 함수를 만들고 호출하는 방법을 이해해 보겠습니다.
기본 함수 만들기
첫 번째 Bash 함수를 만들어 보겠습니다. 터미널 창을 열고 다음을 입력합니다.
cd ~/project
mkdir -p bash_functions
cd bash_functions

이제 새 스크립트에서 간단한 함수를 만들어 보겠습니다. nano 를 사용하여 first_function.sh라는 파일을 만듭니다.
touch first_function.sh
다음 내용을 파일에 추가합니다.
#!/bin/bash
## Define a simple greeting function
say_hello() {
echo "Hello, world!"
}
## Call the function
say_hello
## Define a function that accepts arguments
greet_person() {
echo "Hello, $1!"
}
## Call the function with an argument
greet_person "Alice"
greet_person "Bob"
스크립트를 실행 가능하게 만듭니다.
chmod +x first_function.sh
이제 스크립트를 실행합니다.
./first_function.sh
다음 출력을 볼 수 있습니다.
Hello, world!
Hello, Alice!
Hello, Bob!
함수 구문 설명
Bash 에는 함수를 정의하는 두 가지 방법이 있습니다.
- 표준 구문 사용:
function_name() {
## Commands
}
function키워드 사용:
function function_name {
## Commands
}
두 스타일 모두 동일하게 작동하지만 첫 번째 방법이 더 일반적으로 사용되며 POSIX 를 준수합니다.
함수 인수 접근
함수 내에서 위치 매개변수를 사용하여 함수에 전달된 인수에 접근할 수 있습니다.
$1,$2,$3등은 첫 번째, 두 번째, 세 번째 인수를 나타냅니다.$0은 함수 이름 또는 스크립트 이름을 나타냅니다.$#은 인수의 수를 제공합니다.$@은 모든 인수를 별도의 문자열로 포함합니다.$*은 모든 인수를 단일 문자열로 포함합니다.
함수 인수를 연습하기 위해 새 파일을 만들어 보겠습니다.
touch function_args.sh
다음 내용을 추가합니다.
#!/bin/bash
show_args() {
echo "Function name: $0"
echo "First argument: $1"
echo "Second argument: $2"
echo "Number of arguments: $#"
echo "All arguments: $@"
}
echo "Calling function with three arguments:"
show_args apple banana cherry
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x function_args.sh
./function_args.sh
다음과 유사한 출력을 볼 수 있습니다.
Calling function with three arguments:
Function name: ./function_args.sh
First argument: apple
Second argument: banana
Number of arguments: 3
All arguments: apple banana cherry
함수 정의 및 인수 처리에 대한 이러한 기본적인 이해는 다음 단계에서 함수 반환 값을 사용하는 기반을 제공합니다.
함수 반환 코드 이해
함수를 포함한 Bash 의 모든 명령은 반환 코드 (종료 상태라고도 함) 를 생성합니다. 이 숫자 값은 명령이 성공했는지 실패했는지를 나타냅니다. 이 반환 코드는 Bash 스크립트에서 오류 처리에 필수적입니다.
기본 반환 코드
Bash 에서:
- 반환 코드
0은 성공을 나타냅니다. - 0 이 아닌 값 (1-255) 은 오류 또는 비정상적인 조건을 나타냅니다.
이를 시연하기 위해 스크립트를 만들어 보겠습니다.
cd ~/project/bash_functions
touch return_codes.sh
다음 내용을 추가합니다.
#!/bin/bash
## Function that always succeeds
succeed() {
echo "This function succeeds"
return 0
}
## Function that always fails
fail() {
echo "This function fails"
return 1
}
## Call the functions and check their return codes
succeed
echo "Return code of succeed: $?"
fail
echo "Return code of fail: $?"
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x return_codes.sh
./return_codes.sh
다음과 같은 출력을 볼 수 있습니다.
This function succeeds
Return code of succeed: 0
This function fails
Return code of fail: 1
반환 코드 캡처
특수 변수 $?는 가장 최근에 실행된 명령 또는 함수의 반환 코드를 포함합니다. 이 값은 조건부 실행 및 오류 처리에 중요합니다.
조건부 로직에 반환 코드를 사용하는 연습을 위해 다른 스크립트를 만들어 보겠습니다.
touch check_file.sh
다음 내용을 추가합니다.
#!/bin/bash
## Function to check if a file exists
file_exists() {
local filename="$1"
if [ -f "$filename" ]; then
echo "File $filename exists"
return 0
else
echo "File $filename does not exist"
return 1
fi
}
## Test the function with files that exist and don't exist
file_exists "return_codes.sh"
if [ $? -eq 0 ]; then
echo "Great! The file was found."
else
echo "Too bad. The file was not found."
fi
echo ""
file_exists "non_existent_file.txt"
if [ $? -eq 0 ]; then
echo "Great! The file was found."
else
echo "Too bad. The file was not found."
fi
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x check_file.sh
./check_file.sh
다음과 유사한 출력을 볼 수 있습니다.
File return_codes.sh exists
Great! The file was found.
File non_existent_file.txt does not exist
Too bad. The file was not found.
조건문에서 반환 코드 사용
반환 코드는 && (AND) 및 || (OR) 연산자를 사용하여 조건식에서 직접 사용할 수 있습니다.
touch conditional_return.sh
다음 내용을 추가합니다.
#!/bin/bash
check_number() {
local num=$1
if [ $num -gt 10 ]; then
return 0 ## Success if number is greater than 10
else
return 1 ## Failure if number is not greater than 10
fi
}
## Using conditional operators with return codes
check_number 15 && echo "Number is greater than 10"
check_number 5 || echo "Number is not greater than 10"
## This line runs only if check_number succeeds
check_number 20 && {
echo "Number is greater than 10"
echo "Performing additional operations..."
}
## This line runs only if check_number fails
check_number 3 || {
echo "Number is not greater than 10"
echo "Taking alternative actions..."
}
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x conditional_return.sh
./conditional_return.sh
출력은 다음과 같아야 합니다.
Number is greater than 10
Number is not greater than 10
Number is greater than 10
Performing additional operations...
Number is not greater than 10
Taking alternative actions...
반환 코드가 작동하는 방식을 이해하는 것은 오류를 적절하게 처리하고 작업의 성공 또는 실패를 기반으로 결정을 내릴 수 있는 강력한 스크립트를 작성하는 데 필수적입니다.
사용자 정의 반환 값 사용
반환 코드는 성공 또는 실패를 나타내는 데 유용하지만 0 에서 255 사이의 숫자로 제한됩니다. 함수에서 실제 데이터를 반환하려면 다른 기술을 사용해야 합니다.
방법 1: Echo 를 사용하여 값 반환
함수에서 실제 값을 반환하는 가장 일반적인 방법은 echo 또는 기타 출력 명령을 사용한 다음 해당 출력을 캡처하는 것입니다.
이 기술을 시연하기 위해 스크립트를 만들어 보겠습니다.
cd ~/project/bash_functions
touch return_values.sh
다음 내용을 추가합니다.
#!/bin/bash
## Function that returns a value using echo
get_username() {
echo "labex"
}
## Function that returns a calculated value
add_numbers() {
local sum=$(($1 + $2))
echo $sum
}
## Capture the returned values
username=$(get_username)
echo "The username is: $username"
result=$(add_numbers 5 7)
echo "The sum of 5 and 7 is: $result"
## You can also use the returned value directly
echo "Calculating again: $(add_numbers 10 20)"
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x return_values.sh
./return_values.sh
다음과 같은 출력을 볼 수 있습니다.
The username is: labex
The sum of 5 and 7 is: 12
Calculating again: 30
방법 2: 전역 변수 사용
또 다른 접근 방식은 함수 내에서 전역 변수를 수정하는 것입니다.
touch global_return.sh
다음 내용을 추가합니다.
#!/bin/bash
## Declare global variables
FULL_NAME=""
USER_AGE=0
## Function that sets global variables
set_user_info() {
FULL_NAME="$1 $2"
USER_AGE=$3
## Return success
return 0
}
## Call the function
set_user_info "John" "Doe" 30
## Use the global variables that were set by the function
echo "Full name: $FULL_NAME"
echo "Age: $USER_AGE"
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x global_return.sh
./global_return.sh
출력:
Full name: John Doe
Age: 30
방법 3: 여러 값 반환
함수에서 여러 값을 반환하는 방법을 살펴보겠습니다.
touch multiple_returns.sh
다음 내용을 추가합니다.
#!/bin/bash
## Function that returns multiple values separated by a delimiter
get_system_info() {
local hostname=$(hostname)
local kernel=$(uname -r)
local uptime=$(uptime -p)
## Return multiple values separated by semicolons
echo "$hostname;$kernel;$uptime"
}
## Capture the output and split it
system_info=$(get_system_info)
## Split the values using IFS (Internal Field Separator)
IFS=';' read -r host kernel up <<< "$system_info"
## Display the values
echo "Hostname: $host"
echo "Kernel version: $kernel"
echo "Uptime: $up"
## Alternative method using an array
get_user_details() {
local details=("John Doe" "john@example.com" "Developer")
printf "%s\n" "${details[@]}"
}
## Capture the output into an array
mapfile -t user_details < <(get_user_details)
echo ""
echo "User information:"
echo "Name: ${user_details[0]}"
echo "Email: ${user_details[1]}"
echo "Role: ${user_details[2]}"
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x multiple_returns.sh
./multiple_returns.sh
출력은 시스템 정보 다음에 사용자 세부 정보가 표시되어야 합니다.
Hostname: ubuntu
Kernel version: 5.15.0-1033-azure
Uptime: up 2 hours, 15 minutes
User information:
Name: John Doe
Email: john@example.com
Role: Developer
실제 호스트 이름, 커널 버전 및 가동 시간은 시스템에 따라 다릅니다.
이러한 방법은 단순한 반환 코드 외에 함수에서 값을 반환하는 다양한 방법을 보여줍니다. 각 접근 방식은 특정 요구 사항에 따라 장점이 있습니다.
스크립트에서 실용적인 함수 사용
이제 함수를 정의하고 반환 값을 처리하는 방법을 이해했으므로 이러한 개념을 실제로 보여주는 실용적인 스크립트를 만들어 보겠습니다. 다양한 반환 방식을 사용하는 함수를 사용하는 파일 관리 유틸리티를 만들 것입니다.
파일 관리 유틸리티 만들기
다양한 파일 작업을 수행하는 포괄적인 스크립트를 만들어 보겠습니다.
cd ~/project/bash_functions
touch file_manager.sh
다음 내용을 추가합니다.
#!/bin/bash
## Function to check if a file exists
## Returns 0 if file exists, 1 if it doesn't
file_exists() {
if [ -f "$1" ]; then
return 0
else
return 1
fi
}
## Function to get file size in bytes
## Returns the size via echo
get_file_size() {
if file_exists "$1"; then
## Use stat to get file size in bytes
local size=$(stat -c %s "$1")
echo "$size"
else
echo "0"
fi
}
## Function to count lines in a file
## Returns line count via echo
count_lines() {
if file_exists "$1"; then
local lines=$(wc -l < "$1")
echo "$lines"
else
echo "0"
fi
}
## Function to get file information
## Returns multiple values using a delimiter
get_file_info() {
local filename="$1"
if file_exists "$filename"; then
local size=$(get_file_size "$filename")
local lines=$(count_lines "$filename")
local modified=$(stat -c %y "$filename")
local permissions=$(stat -c %A "$filename")
## Return all info with semicolons as delimiters
echo "$size;$lines;$modified;$permissions"
else
echo "0;0;N/A;N/A"
fi
}
## Function to create a test file
create_test_file() {
local filename="$1"
local lines="$2"
## Create or overwrite the file
> "$filename"
## Add the specified number of lines
for ((i = 1; i <= lines; i++)); do
echo "This is line $i of the test file." >> "$filename"
done
## Return success if file was created
if file_exists "$filename"; then
return 0
else
return 1
fi
}
## Main script execution starts here
echo "File Management Utility"
echo "----------------------"
## Create a test file
TEST_FILE="sample.txt"
echo "Creating test file with 10 lines..."
if create_test_file "$TEST_FILE" 10; then
echo "File created successfully."
else
echo "Failed to create file."
exit 1
fi
## Check if file exists
echo ""
echo "Checking if file exists..."
if file_exists "$TEST_FILE"; then
echo "File '$TEST_FILE' exists."
else
echo "File '$TEST_FILE' does not exist."
fi
## Get file size
echo ""
echo "Getting file size..."
size=$(get_file_size "$TEST_FILE")
echo "File size: $size bytes"
## Count lines
echo ""
echo "Counting lines in file..."
lines=$(count_lines "$TEST_FILE")
echo "Line count: $lines"
## Get all file information
echo ""
echo "Getting complete file information..."
file_info=$(get_file_info "$TEST_FILE")
## Split the returned values
IFS=';' read -r size lines modified permissions <<< "$file_info"
echo "File: $TEST_FILE"
echo "Size: $size bytes"
echo "Lines: $lines"
echo "Last modified: $modified"
echo "Permissions: $permissions"
echo ""
echo "File content preview:"
head -n 3 "$TEST_FILE"
echo "..."
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x file_manager.sh
./file_manager.sh
다음과 유사한 출력을 볼 수 있습니다.
File Management Utility
----------------------
Creating test file with 10 lines...
File created successfully.
Checking if file exists...
File 'sample.txt' exists.
Getting file size...
File size: 300 bytes
Counting lines in file...
Line count: 10
Getting complete file information...
File: sample.txt
Size: 300 bytes
Lines: 10
Last modified: 2023-11-04 12:34:56.789012345 +0000
Permissions: -rwxrwxr-x
File content preview:
This is line 1 of the test file.
This is line 2 of the test file.
This is line 3 of the test file.
...
파일 크기, 수정 시간 및 권한에 대한 정확한 값은 다를 수 있습니다.
스크립트 분석
파일 관리 유틸리티는 몇 가지 주요 개념을 보여줍니다.
- 반환 코드 -
file_exists()및create_test_file()함수는 성공 시 0, 실패 시 1 을 반환합니다. - echo 로 값 반환 -
get_file_size()및count_lines()함수는 echo 를 통해 숫자 값을 반환합니다. - 여러 값 반환 -
get_file_info()함수는 구분 기호를 사용하여 여러 값을 반환합니다. - 함수 구성 - 일부 함수는 다른 함수를 호출하여 복잡한 기능을 구축하는 방법을 보여줍니다.
- 조건부 실행 - 스크립트는 반환 코드를 사용하여 프로그램 흐름을 제어하는 if 문을 사용합니다.
이 실용적인 예제는 유용한 유틸리티를 만들기 위해 다양한 함수 기술을 결합하는 방법을 보여줍니다. 스크립트는 적절한 오류 처리, 함수 구성 및 값을 반환하는 다양한 방법을 보여줍니다.
오류 처리 및 함수 모범 사례
마지막 섹션에서는 Bash 함수의 오류 처리 기술과 모범 사례를 살펴보겠습니다. 적절한 오류 처리는 강력하고 유지 관리 가능한 스크립트를 만드는 데 매우 중요합니다.
오류 처리가 있는 스크립트 만들기
강력한 오류 처리를 보여주는 새 스크립트를 만들어 보겠습니다.
cd ~/project/bash_functions
touch error_handling.sh
다음 내용을 추가합니다.
#!/bin/bash
## Enable error handling
set -e ## Exit immediately if a command exits with non-zero status
## Define a function to log messages
log_message() {
local level="$1"
local message="$2"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}
## Function to validate a number is positive
validate_positive() {
local num="$1"
local name="$2"
## Check if the argument is a number
if ! [[ "$num" =~ ^[0-9]+$ ]]; then
log_message "ERROR" "$name must be a number"
return 1
fi
## Check if the number is positive
if [ "$num" -le 0 ]; then
log_message "ERROR" "$name must be positive"
return 2
fi
return 0
}
## Function that divides two numbers
divide() {
local numerator="$1"
local denominator="$2"
## Validate inputs
validate_positive "$numerator" "Numerator" || return $?
validate_positive "$denominator" "Denominator" || return $?
## Check for division by zero
if [ "$denominator" -eq 0 ]; then
log_message "ERROR" "Division by zero is not allowed"
return 3
fi
## Perform division
local result=$(echo "scale=2; $numerator / $denominator" | bc)
echo "$result"
return 0
}
## Function to safely get user input
get_number() {
local prompt="$1"
local input
while true; do
read -p "$prompt: " input
if validate_positive "$input" "Input"; then
echo "$input"
return 0
else
log_message "WARN" "Invalid input. Please try again."
fi
done
}
## Disable automatic exit on error for the main script
set +e
## Main script logic
log_message "INFO" "Starting division calculator"
## Test with valid values
result=$(divide 10 2)
exit_code=$?
if [ $exit_code -eq 0 ]; then
log_message "INFO" "10 / 2 = $result"
else
log_message "ERROR" "Division failed with code $exit_code"
fi
## Test with invalid values
echo ""
log_message "INFO" "Testing with invalid values"
divide 0 5
log_message "INFO" "Exit code: $?"
divide 10 0
log_message "INFO" "Exit code: $?"
divide abc 5
log_message "INFO" "Exit code: $?"
## Interactive mode
echo ""
log_message "INFO" "Interactive mode"
echo "Let's perform a division. Enter positive numbers."
## Get user input safely
num1=$(get_number "Enter first number")
num2=$(get_number "Enter second number")
## Perform division
result=$(divide "$num1" "$num2")
exit_code=$?
if [ $exit_code -eq 0 ]; then
log_message "INFO" "$num1 / $num2 = $result"
else
log_message "ERROR" "Division failed with code $exit_code"
fi
log_message "INFO" "Calculator finished"
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x error_handling.sh
./error_handling.sh
다음과 유사한 출력을 보고 숫자를 입력하라는 메시지가 표시됩니다.
[2023-11-04 13:45:23] [INFO] Starting division calculator
[2023-11-04 13:45:23] [INFO] 10 / 2 = 5.00
[2023-11-04 13:45:23] [INFO] Testing with invalid values
[2023-11-04 13:45:23] [ERROR] Numerator must be positive
[2023-11-04 13:45:23] [INFO] Exit code: 2
[2023-11-04 13:45:23] [ERROR] Division by zero is not allowed
[2023-11-04 13:45:23] [INFO] Exit code: 3
[2023-11-04 13:45:23] [ERROR] Numerator must be a number
[2023-11-04 13:45:23] [INFO] Exit code: 1
[2023-11-04 13:45:23] [INFO] Interactive mode
Let's perform a division. Enter positive numbers.
Enter first number:
예를 들어 20과 같은 숫자를 입력합니다. 그러면 두 번째 숫자를 입력하라는 메시지가 표시됩니다.
Enter second number:
4와 같은 다른 숫자를 입력하면 다음과 같은 내용이 표시됩니다.
[2023-11-04 13:45:30] [INFO] 20 / 4 = 5.00
[2023-11-04 13:45:30] [INFO] Calculator finished
Bash 함수에 대한 모범 사례
예제를 기반으로 Bash 함수를 사용할 때의 몇 가지 모범 사례는 다음과 같습니다.
- 설명적인 주석 추가 - 각 함수가 수행하는 작업, 매개변수 및 반환 값을 문서화합니다.
- 의미 있는 함수 이름 사용 - 함수의 목적을 명확하게 나타내는 이름을 선택합니다.
- 입력 매개변수 유효성 검사 - 오류를 방지하기 위해 입력을 확인합니다.
- 지역 변수 사용 -
local키워드를 사용하여 변수 이름 충돌을 방지합니다. - 적절한 종료 코드 반환 - 일반적인 종료 코드 (성공 시 0, 오류 시 0 이 아닌 값) 를 사용합니다.
- 적절한 오류 처리 구현 - 오류를 기록하고 적절하게 처리합니다.
- 함수 집중 유지 - 각 함수는 한 가지 작업을 잘 수행해야 합니다.
- 함수 구성 사용 - 더 간단한 함수를 결합하여 복잡한 기능을 구축합니다.
- 반환 값 문서화 - 값이 반환되는 방법 (echo, 반환 코드 등) 을 명확하게 문서화합니다.
- 엣지 케이스 테스트 - 함수가 특이한 입력을 올바르게 처리하는지 확인합니다.
이러한 모범 사례를 따르면 더 안정적이고 유지 관리 가능하며 재사용 가능한 Bash 함수를 만들 수 있습니다.
함수 라이브러리 만들기
마지막 연습으로 재사용 가능한 함수 라이브러리를 만들어 보겠습니다.
touch math_functions.lib
다음 내용을 추가합니다.
#!/bin/bash
## math_functions.lib - A library of mathematical functions
## Add two numbers
add() {
echo $(($1 + $2))
}
## Subtract second number from first
subtract() {
echo $(($1 - $2))
}
## Multiply two numbers
multiply() {
echo $(($1 * $2))
}
## Divide first number by second (with decimal precision)
divide() {
if [ "$2" -eq 0 ]; then
return 1
fi
echo "scale=2; $1 / $2" | bc
return 0
}
## Calculate power: first number raised to second number
power() {
echo $(($1 ** $2))
}
## Check if a number is even
is_even() {
if (($1 % 2 == 0)); then
return 0
else
return 1
fi
}
## Check if a number is odd
is_odd() {
if is_even "$1"; then
return 1
else
return 0
fi
}
이제 이 라이브러리를 사용하는 스크립트를 만듭니다.
touch use_library.sh
다음 내용을 추가합니다.
#!/bin/bash
## Source the math functions library
source math_functions.lib
## Display a header
echo "Math Functions Demo"
echo "------------------"
## Test the functions
echo "Addition: 5 + 3 = $(add 5 3)"
echo "Subtraction: 10 - 4 = $(subtract 10 4)"
echo "Multiplication: 6 * 7 = $(multiply 6 7)"
## Test division with error handling
div_result=$(divide 20 5)
if [ $? -eq 0 ]; then
echo "Division: 20 / 5 = $div_result"
else
echo "Division error: Cannot divide by zero"
fi
## Test division by zero
div_result=$(divide 20 0)
if [ $? -eq 0 ]; then
echo "Division: 20 / 0 = $div_result"
else
echo "Division error: Cannot divide by zero"
fi
echo "Power: 2 ^ 8 = $(power 2 8)"
## Test the even/odd functions
echo ""
echo "Number properties:"
for num in 1 2 3 4 5; do
echo -n "Number $num is "
if is_even $num; then
echo "even"
else
echo "odd"
fi
done
저장하고, 실행 가능하게 만들고, 스크립트를 실행합니다.
chmod +x use_library.sh
./use_library.sh
다음과 같은 내용이 표시됩니다.
Math Functions Demo
------------------
Addition: 5 + 3 = 8
Subtraction: 10 - 4 = 6
Multiplication: 6 * 7 = 42
Division: 20 / 5 = 4.00
Division error: Cannot divide by zero
Power: 2 ^ 8 = 256
Number properties:
Number 1 is odd
Number 2 is even
Number 3 is odd
Number 4 is even
Number 5 is odd
이 라이브러리 접근 방식은 여러 스크립트로 가져와 코드 재사용 및 유지 관리를 촉진할 수 있는 재사용 가능한 함수 컬렉션을 만드는 방법을 보여줍니다.
요약
이 튜토리얼에서는 Bash 함수 반환 값의 필수 개념을 배웠습니다. 기본적인 함수 생성 및 인수 처리부터 시작하여 반환 코드와 성공 또는 실패를 나타내는 방법을 이해하는 단계로 진행했습니다. echo, 전역 변수, 여러 값에 대한 구분 기호를 포함하여 함수에서 실제 데이터를 반환하는 여러 가지 방법을 살펴보았습니다.
실용적인 예제를 통해 적절한 함수 구성 및 오류 처리를 보여주는 파일 관리 유틸리티를 구현했습니다. 마지막으로, 강력하고 재사용 가능한 함수를 만들고 이를 라이브러리로 구성하는 모범 사례를 배웠습니다.
이 튜토리얼에서 습득한 기술은 적절한 오류 처리, 모듈성 및 재사용성을 갖춘 보다 정교한 Bash 스크립트를 작성하기 위한 견고한 기반을 제공합니다. 이러한 기술을 통해 시스템 관리자 또는 개발자로서 전반적인 생산성을 향상시키면서 다양한 자동화 작업에 대한 유지 관리 가능한 셸 스크립트를 만들 수 있습니다.



