Unix / Linux - Shell Functions

Xin chào, những người học lập trình tiềm năng! Chào mừng các bạn đến với hành trình vào thế giới của các Hàm Shell. Là giáo viên máy tính gần gũi của bạn, tôi rất vui mừng được hướng dẫn các bạn qua chủ đề thú vị này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ cơ bản và dần dần nâng cao. Hãy cùng nhau vào cuộc!

Unix / Linux - Shell Functions

What are Shell Functions? (Những gì là Hàm Shell?)

Trước khi chúng ta bắt đầu tạo các hàm, hãy hiểu chúng là gì. Hãy tưởng tượng các hàm như những người giúp việc nhỏ trong kịch bản của bạn. Chúng giống như những mini-chương trình trong chương trình chính của bạn để thực hiện các nhiệm vụ cụ thể. Giống như bạn có thể có một người bạn giỏi trong việc pha cà phê, bạn có thể tạo một hàm chuyên gia trong việc thực hiện một công việc cụ thể trong kịch bản của bạn.

Creating Functions (Tạo các hàm)

Tạo một hàm giống như dạy máy tính của bạn một trick mới. Đây là cấu trúc cơ bản:

function_name() {
commands
}

Hãy tạo một hàm đơn giản chào đón chúng ta:

say_hello() {
echo "Hello, wonderful world!"
}

Để sử dụng hàm này, chúng ta chỉ cần gọi nó bằng tên:

say_hello

Khi bạn chạy điều này, bạn sẽ thấy:

Hello, wonderful world!

Đó có phải là điều tuyệt vời không? Chúng ta vừa dạy máy tính của mình cách chào hello!

Pass Parameters to a Function (Truyền tham số vào một hàm)

Bây giờ, hãy làm cho hàm của chúng ta thông minh hơn một chút. Chúng ta có thể truyền thông tin vào các hàm, giống như bạn có thể nói với người bạn pha cà phê của bạn cách bạn thích cà phê của mình.

Đây là cách chúng ta có thể chỉnh sửa hàm say_hello để chào một người cụ thể:

say_hello() {
echo "Hello, $1! How are you today?"
}

Trong hàm này, $1 đại diện cho tham số đầu tiên chúng ta truyền vào hàm. Hãy thử nó:

say_hello Alice

Kết quả:

Hello, Alice! How are you today?

Chúng ta thậm chí có thể truyền nhiều tham số:

greet() {
echo "Hello, $1! The weather is $2 today."
}

greet Alice sunny

Kết quả:

Hello, Alice! The weather is sunny today.

Returning Values from Functions (Trả về giá trị từ các hàm)

Trong lập trình Shell, các hàm không trả về giá trị theo cách truyền thống. Thay vào đó, chúng có thể echo một kết quả hoặc đặt một biến toàn cục. Hãy xem cả hai phương pháp:

Sử dụng echo:

get_square() {
echo $(($1 * $1))
}

result=$(get_square 5)
echo "The square of 5 is $result"

Kết quả:

The square of 5 is 25

Sử dụng một biến toàn cục:

get_square() {
square=$(($1 * $1))
}

get_square 6
echo "The square of 6 is $square"

Kết quả:

The square of 6 is 36

Nested Functions (Hàm lồng nhau)

Giống như bạn có thể có một câu chuyện trong câu chuyện, bạn có thể có một hàm trong hàm. Điều này được gọi là lồng nhau. Hãy xem một ví dụ:

outer_function() {
echo "This is the outer function"

inner_function() {
echo "This is the inner function"
}

inner_function
}

outer_function

Kết quả:

This is the outer function
This is the inner function

Function Call from Prompt (Gọi hàm từ dòng lệnh)

Bạn cũng có thể định nghĩa và gọi các hàm trực tiếp từ dòng lệnh. Điều này đặc biệt hữu ích cho việc tạo các lệnh tùy chỉnh. Dưới đây là cách:

  1. Mở terminal của bạn
  2. Định nghĩa hàm của bạn:
greet() { echo "Hello, $1!"; }
  1. Bây giờ bạn có thể sử dụng nó:
greet World

Kết quả:

Hello, World!

Lưu ý, các hàm này chỉ tồn tại trong phiên terminal hiện tại. Nếu bạn muốn chúng trở thành vĩnh viễn, bạn nên thêm chúng vào tệp cấu hình shell của bạn (như .bashrc hoặc .zshrc).

Common Shell Function Methods (Các phương pháp phổ biến với hàm Shell)

Dưới đây là bảng các phương pháp phổ biến được sử dụng với các hàm Shell:

Phương pháp Mô tả Ví dụ
function_name() Định nghĩa một hàm greet() { echo "Hello!"; }
$1, $2, ... Truy cập các tham số hàm echo "Hello, $1!"
$# Trả về số lượng tham số echo "Number of parameters: $#"
$@ Trả về tất cả các tham số như các từ riêng biệt for param in "$@"; do echo $param; done
$* Trả về tất cả các tham số như một từ duy nhất echo "All parameters: $*"
local Khai báo một biến cục bộ local name="Alice"
return Thoát khỏi hàm với một trạng thái return 0

Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo! Đừng ngại thử nghiệm với các hàm này và tạo ra của riêng bạn. Trước khi bạn biết điều đó, bạn sẽ viết các kịch bản phức tạp một cách dễ dàng.

Tôi hy vọng hướng dẫn này đã giúp ích và thú vị. Hãy tiếp tục lập trình, và nhớ rằng - mỗi chuyên gia đều từng là người mới bắt đầu. Chúc các bạn viết script vui vẻ!

Credits: Image by storyset