Viết shell script là cách bạn gom nhiều câu lệnh Linux vào một tệp duy nhất để shell tự động thực thi lần lượt, giúp tiết kiệm thời gian và hạn chế sai sót khi thao tác lặp lại. Trong bài viết này, bạn sẽ tìm hiểu từ khái niệm cơ bản đến cách viết shell script bằng cách sử dụng biến, điều kiện, vòng lặp và mẹo gỡ lỗi để áp dụng hiệu quả vào công việc hằng ngày.
Những điểm chính
- Khái niệm: Hiểu rõ shell script là một tệp văn bản chứa dãy lệnh, giúp tự động hóa các thao tác lặp lại và tiết kiệm thời gian.
- Những điều cần nắm khi sử dụng shell script: Nắm vững cách tạo script, sử dụng biến, comment, câu lệnh điều kiện và vòng lặp, giúp bạn xây dựng các script có cấu trúc, dễ đọc và hiệu quả.
- Xử lý lỗi: Biết cách gỡ rối các sự cố phổ biến như quyền truy cập và lỗi cú pháp, giúp bạn nhanh chóng khắc phục và hoàn thiện script của mình.
- Câu hỏi thường gặp: Được giải đáp các thắc mắc về các dạng bài tập, cách bắt đầu học và sự khác biệt giữa script với lệnh trực tiếp, giúp củng cố kiến thức và làm rõ các vấn đề thực tế.
Shell script là gì?
Shell script là một tệp văn bản chứa một dãy lệnh dòng lệnh để shell trên hệ điều hành Unix/Linux (như Bash) đọc và thực thi lần lượt. Shell script cho phép gộp nhiều thao tác gõ lệnh rời rạc thành một chương trình tự động hóa duy nhất, giúp tiết kiệm thời gian và hạn chế sai sót khi lặp lại thao tác.

Những điều cần nắm khi sử dụng shell script trong Linux
Cách tạo shell scripts
Bạn truy cập máy chủ qua SSH và tạo file có phần mở rộng .sh bằng lệnh:
touch script.shOutput:

Mặc định file vừa tạo chưa có quyền thực thi, bạn cần thêm quyền thực thi với lệnh sau:
chmod +x script.shOutput:

Sau đó, bạn cần ghi một vài command vào tệp script.sh để kiểm tra:
vi script.shTiếp theo, bạn hãy thêm các dòng lệnh sau để in thông điệp ra màn hình, tạo tệp mới và xem danh sách file:
echo "Bắt đầu Shell script tạo file có tên file_new"
touch file_new
ls -l
echo "Kết thúc shell script"Output:

Cuối cùng, bạn cần lưu tệp và thực thi script với cú pháp sau:
./script.shOutput:

Comment trong shell script
Bất kỳ dòng nào trong script bắt đầu bằng ký tự # thì các command ở phần còn lại của dòng đó sẽ không được thực thi.
Ví dụ:
# đây là comment
echo “Đây là ví dụ của comment trong shell script”
Output:


Biến trong Shell Script
Trong Shell script có hỗ trợ biến (variables) và không yêu cầu định nghĩa kiểu dữ liệu trước khi sử dụng. Chúng có 2 kiểu dữ liệu chính là:
- System Defined variables: Là biến được hệ thống định nghĩa sẵn.
- User-Defined Variables: Là biến do người dùng tự định nghĩa.
Để gán giá trị vào biến, bạn cần dùng toán tử “=” và không được khoảng cách ở trước và sau toán tử “=”. Nếu muốn lấy giá trị của biến thì bạn cần dùng “$” đặt trước tên biến.
Ví dụ:
#sử dụng biến của hệ thống
echo $USER
#Định nghĩa biến của người dùng
name=vietnix
echo $name
Output:


Chỉ định trình biên dịch
Khi viết shell script (tệp .sh), dòng đầu tiên thường là dòng đặc biệt dùng để chỉ định chương trình interpreter chịu trách nhiệm thực thi các lệnh bên trong script. Với Bash, đường dẫn thường dùng ở dòng này là:
#!/bin/bashToán tử so sánh trong shell script
So sánh số nguyên
| Toán tử | Ý nghĩa |
| -eq | So sánh bằng nhau |
| -ne | So sánh khác nhau |
| -gt | So sánh lớn hơn |
| -ge | So sánh lớn hơn hoặc bằng |
| -lt | So sánh nhỏ hơn |
| -le | So sánh nhỏ hơn hoặc bằng |
So sánh chuỗi
| Toán tử | Ý nghĩa |
| == | So sánh bằng nhau |
| != | So sánh khác nhau |
| < | So sánh chuỗi nhỏ hơn theo thứ tự bảng chữ cái ASCII |
| > | So sánh chuỗi lớn hơn theo thứ tự bảng chữ cái ASCII |
Câu lệnh điều kiện trong shell script
Trong shell script, câu lệnh điều kiện dùng để kiểm tra một điều kiện xác định và thực hiện hành động tương ứng với kết quả true hoặc false, tương tự cấu trúc if/else trong nhiều ngôn ngữ lập trình khác. Cú pháp câu lệnh điều kiện trong shell script:
if [ điều_kiện ]; then
# lệnh nếu điều kiện đúng
fiBạn cũng có thể mở rộng thêm câu điều kiện theo cú pháp sau:
if [ điều_kiện ]; then
# nếu đúng
else
# nếu sai
fiVí dụ:
#!/bin/bash
a=5
b=10
if [ $a -lt $b ]; then
echo “$a nhỏ hơn $b”
else
echo “$a lớn hơn $b”
fi
Output:

Kết quả:

Bạn sửa lại biến a thành 20 để kiểm tra tới else:

Kết quả:

Nếu bạn có nhiều hơn 2 điều kiện thì có thể áp dụng cấu trúc sau:
if [ điều_kiện_1 ]; then
# nếu điều kiện 1 đúng
elif [ điều_kiện_2 ]; then
# nếu điều kiện 2 đúng
else
# nếu không điều kiện nào đúng
fiVòng lặp trong shell script
Bạn có thể áp dụng vòng lặp trong shell script với cú pháp:
for variable in item1 item2 item3; do
# Lệnh cần thực hiện
doneVí dụ:
for name in “Alice” “Bob” “Charlie”; do
echo “Xin chào $name”
done
Output:

Đối số trong shell script
Trong shell script, đối số là các giá trị được truyền vào script hoặc hàm tại thời điểm thực thi và được truy cập thông qua các biến vị trí như $1, $2, $3,… Bên cạnh đó, shell còn cung cấp một số biến đối số đặc biệt thường dùng như:
- $#: Số lượng đối số được truyền vào script.
- $0: Tên của script.
- $?: Dùng để in mã thoát của chương trình.
Ví dụ:
#!/bin/bash
echo “Số lượng đối số được truyền vào: $#”
echo “Tên của script $0”
echo “Đối số thứ nhất: $1”
echo “Đối số thứ hai: $2”
Output:


Lưu kết quả đầu ra vào biến
Bạn hoàn toàn có thể lưu kết quả đầu ra vào biến trong shell script thông qua cú pháp:
variable=$(command)
hoặc
variable=`command`Ví dụ:
#!/bin/bash
a=$(pwd)
b=`pwd`
echo $a
echo $b
Output:


Cách gỡ một số lỗi shell script phổ biến
Gỡ lỗi các sự cố phổ biến trong shell script có thể tập trung vào một số lỗi điển hình và cách xử lý như sau:
- Quyền bị từ chối: Kiểm tra lại quyền thực thi của script và cấp quyền bằng lệnh
chmod +x ten_script.shđể cho phép thực thi tệp. - Không tìm câu thấy lệnh: Xem lại dòng shebang ở đầu script có chỉ đúng trình thông dịch hay không và kiểm tra script đã nằm trong thư mục thuộc PATH hay chưa.
- Script không chạy như mong đợi: Chạy script với
bash -x ten_script.shđể kích hoạt chế độ gỡ lỗi, theo dõi từng lệnh được thực thi và xác định vị trí gây lỗi.

Câu hỏi thường gặp
Bài tập lập trình Shell trong Linux gồm những dạng nào?
Các bài tập thường gặp các bài tập đọc ghi file, xử lý chuỗi, thao tác với biến, tham số dòng lệnh, cấu trúc điều kiện và vòng lặp để luyện cú pháp shell cơ bản.
Học lập trình shell trên Ubuntu bắt đầu từ đâu?
Bạn có thể bắt đầu bằng việc viết các script .sh đơn giản với shebang #!/bin/bash, dùng các lệnh cơ bản, sau đó mở rộng sang biến, điều kiện, vòng lặp và hàm.
Có nguồn bài tập shell script Linux kèm lời giải không?
Nhiều blog kỹ thuật và diễn đàn hay tài liệu giảng dạy Linux cung cấp bộ bài tập shell script kèm hướng dẫn hoặc gợi ý lời giải để tự đối chiếu.
Shell script cơ bản thường bao gồm những phần nào?
Một script cơ bản thường có shebang ở dòng đầu, phần khai báo biến, các lệnh xử lý chính, có thể kèm theo câu lệnh điều kiện và vòng lặp.
Script trong Linux khác gì so với gõ lệnh trực tiếp?
Script cho phép lưu sẵn nhiều lệnh trong một tệp và thực thi hàng loạt chỉ với một lần chạy, thay vì phải gõ thủ công từng lệnh trong terminal.
Có thể chạy file .sh trên Windows hay không?
Bạn có thể sử dụng WSL, Git Bash hoặc môi trường giả lập Unix (như Cygwin) trên Windows để chạy file .sh tương tự như trên Linux.
Viết shell script không chỉ đơn thuần là gõ lệnh, mà là bước đầu để bạn làm chủ tư duy tự động hóa và tối ưu hiệu suất quản trị hệ thống. Hy vọng những kiến thức cơ bản về biến, điều kiện và vòng lặp trong bài viết sẽ là nền tảng vững chắc cho hành trình lập trình của bạn.




