Hướng dẫn viết kịch bản Shell: Kịch bản Shell mở rộng

Giới thiệu về Kịch bản Shell mở rộng

Xin chào các bạn đang học lập trình! Tôi rất vui mừng được hướng dẫn các bạn khám phá thế giới đầy thú vị của lập trình kịch bản Shell Unix/Linux. Với nhiều năm kinh nghiệm làm giáo viên khoa học máy tính, tôi đã chứng kiến biết bao nhiêu sinh viên hứng thú khi lĩnh hội các khái niệm này. Hôm nay, chúng ta sẽ cùng tìm hiểu về kịch bản Shell mở rộng, xây dựng trên nền tảng cơ bản để tạo ra các chương trình mạnh mẽ và linh hoạt hơn. Đừng lo lắng nếu bạn là người mới bắt đầu - chúng ta sẽ bắt đầu từ đầu và cùng nhau học hỏi!

Unix / Linux - Shell Scripting

Kịch bản Shell mở rộng là gì?

Kịch bản Shell mở rộng giống như một cây kéo đa năng trong thế giới Unix/Linux. Chúng cho phép chúng ta tạo ra các chương trình phức tạp hơn và có nhiều tính năng hơn bằng cách sử dụng các lệnh và cấu trúc内置 của Shell. Hãy tưởng tượng chúng như những công thức nấu ăn mà máy tính của bạn sẽ thực hiện để giải quyết các vấn đề của bạn!

Cấu trúc cơ bản của một kịch bản Shell mở rộng

Hãy bắt đầu với khung công tác của kịch bản chúng ta:

#!/bin/bash

# Mã của bạn ở đây

exit 0

Điều này có thể看起来 đơn giản, nhưng nó là nền tảng của mỗi kịch bản chúng ta sẽ viết. The #!/bin/bash được gọi là shebang, và nó告诉 hệ thống sử dụng bộ giải thích nào. The exit 0 ở cuối là như nói "tạm biệt" với máy tính của bạn, cho biết kịch bản đã kết thúc thành công.

Biến và kiểu dữ liệu

Trong lập trình kịch bản Shell, biến giống như những hộp để chúng ta lưu trữ thông tin. Hãy xem cách sử dụng chúng:

#!/bin/bash

name="Alice"
age=25
pi=3.14

echo "Hello, $name! You are $age years old."
echo "Pi is approximately $pi"

exit 0

Khi bạn chạy kịch bản này, nó sẽ выводить:

Hello, Alice! You are 25 years old.
Pi is approximately 3.14

Chú ý cách chúng ta sử dụng $ để tham chiếu đến biến của mình. Nó giống như nói với máy tính, "Hey, lấy cái trong hộp này cho tôi!"

Cấu trúc điều khiển

Câu lệnh If-Else

Bây giờ, hãy làm cho kịch bản của chúng ta thông minh hơn với một chút quyết định:

#!/bin/bash

age=18

if [ $age -ge 18 ]; then
echo "You can vote!"
else
echo "Sorry, you're too young to vote."
fi

exit 0

Kịch bản này kiểm tra xem tuổi có lớn hơn hoặc bằng 18 hay không. Nếu có, nó sẽ nói bạn có thể bầu cử. Nếu không, nó sẽ nói bạn quá trẻ để bầu cử. The -ge có nghĩa là "lớn hơn hoặc bằng" trong ngôn ngữ Shell.

Vòng lặp

Vòng lặp giống như một vòng đu quay cho mã của bạn. Hãy xem một for loop trong hành động:

#!/bin/bash

for i in {1..5}
do
echo "Round $i"
done

exit 0

Điều này sẽ đếm từ 1 đến 5, nói "Round" mỗi lần. Nó giống như kịch bản của bạn là một huấn luyện viên thể dục, đếm số lần của bạn!

Hàm

Hàm giống như những kịch bản nhỏ trong kịch bản của bạn. Chúng là các khối mã có thể tái sử dụng:

#!/bin/bash

greet() {
echo "Hello, $1! Nice to meet you."
}

greet "Bob"
greet "Alice"

exit 0

Kịch bản này định nghĩa một hàm greet rằng chào hỏi bất kỳ ai bạn bảo nó làm. The $1 là một biến đặc biệt giữ giá trị của đối số đầu tiên được truyền vào hàm.

Đầu vào và đầu ra

Hãy làm cho kịch bản của chúng ta tương tác:

#!/bin/bash

echo "What's your name?"
read name

echo "Hello, $name! How old are you?"
read age

if [ $age -ge 18 ]; then
echo "You can vote, $name!"
else
echo "Sorry $name, you're too young to vote."
fi

exit 0

Kịch bản này hỏi tên và tuổi của bạn, sau đó quyết định xem bạn có thể bầu cử hay không. Nó giống như một quan chức bầu cử thân thiện!

Làm việc với tệp

Kịch bản Shell rất tốt cho quản lý tệp. Hãy tạo một kịch bản sao lưu tệp:

#!/bin/bash

original_file="important_data.txt"
backup_file="important_data_backup.txt"

if [ -f "$original_file" ]; then
cp "$original_file" "$backup_file"
echo "Backup created successfully!"
else
echo "Error: $original_file not found."
fi

exit 0

Kịch bản này kiểm tra xem important_data.txt có tồn tại hay không, và nếu có, tạo một bản sao lưu. Nó giống như một trợ lý cá nhân cho tệp của bạn!

Xử lý lỗi

Hãy thêm một chút xử lý lỗi để làm cho kịch bản của chúng ta mạnh mẽ hơn:

#!/bin/bash

divide() {
if [ $2 -eq 0 ]; then
echo "Error: Cannot divide by zero!"
return 1
fi
result=$(($1 / $2))
echo "Result: $result"
return 0
}

divide 10 2
divide 10 0

exit 0

Kịch bản này định nghĩa một hàm divide rằng kiểm tra việc chia cho không. Nó giống như một giáo viên toán học cảnh báo bạn về lỗi của bạn trước khi bạn phạm phải!

Đối số dòng lệnh

Cuối cùng, hãy tạo một kịch bản sử dụng đối số dòng lệnh:

#!/bin/bash

if [ $# -eq 0 ]; then
echo "Usage: $0 <name>"
exit 1
fi

echo "Hello, $1! Welcome to shell scripting."

exit 0

Chạy kịch bản này với ./script.sh Alice, và nó sẽ chào Alice. The $# kiểm tra số lượng đối số, và $0 là tên của kịch bản.

Kết luận

Chúc mừng! Bạn vừa bước những bước đầu tiên vào thế giới kịch bản Shell mở rộng. Nhớ rằng, thực hành là chìa khóa để thành thạo. Hãy thử kết hợp các khái niệm này, thực nghiệm với ý tưởng của riêng bạn, và sớm bạn sẽ trở thành một nhà lập trình kịch bản chuyên nghiệp!

Dưới đây là bảng tóm tắt các khái niệm chính chúng ta đã covered:

Concept Description Example
Variables Store and retrieve data name="Alice"
If-Else Make decisions if [ $age -ge 18 ]; then ... fi
Loops Repeat actions for i in {1..5}; do ... done
Functions Reusable code blocks greet() { ... }
Input/Output Interact with users read name
File Operations Manage files cp "$original_file" "$backup_file"
Error Handling Manage potential issues if [ $2 -eq 0 ]; then ... fi
Command Line Args Use script parameters $1, $2, $#

Tiếp tục viết mã, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Thế giới của kịch bản Shell rất rộng lớn và thú vị, và bạn mới chỉ bắt đầu hành trình của mình. Chúc bạn viết mã vui vẻ!

Credits: Image by storyset