Debugging là quá trình tìm và khắc phục lỗi, hay xử lý các hành vi bất thường trong mã. Trong Linux, Bash cung cấp một số tùy chọn giúp bạn dễ dàng debug các shell script. Bài viết này sẽ hướng dẫn bạn cách debug code shell script một cách chi tiết và hiệu quả.
Xem thêm:
1. Tùy chọn ‘-x’
Tùy chọn phổ biến nhất là ‘-x’. Tùy chọn này in ra các lệnh và các tham số của chúng khi được thực thi, giúp bạn nhìn thấy giá trị của các biến thay vì chỉ thấy tên của chúng. Khi sử dụng tùy chọn ‘-x’ trong shell script, bạn chỉ cần thêm ‘-x’ vào cuối dòng shebang. Nếu muốn sử dụng từ dòng lệnh, bạn chạy set -x
. Để dừng việc hiển thị thông tin debug, bạn có thể sử dụng set +x
.
Mẹo: Bạn có thể debug một phần script cụ thể bằng cách thêm set -x
trước đoạn muốn debug và set +x
sau đoạn đó để khoanh vùng lỗi.
Ví dụ:
Dưới đây là một ví dụ đơn giản về cách sử dụng tùy chọn ‘-x’. Khi thêm ‘-x’ vào dòng shebang, bạn sẽ thấy các lệnh được thực thi sẽ bắt đầu bằng dấu cộng (+). Ví dụ, khi bạn đặt giá trị cho biến TEST_VAR
và in giá trị đó ra màn hình, bạn sẽ thấy các lệnh và kết quả thực thi rõ ràng.
#!/bin/bash -x TEST_VAR="Hello, World!" echo $TEST_VAR
Giải thích:
- Khi script được chạy, Bash sẽ hiển thị từng lệnh cùng với giá trị thực sự của biến
TEST_VAR
trước khi kết quả được in ra màn hình. - Đầu ra có thể trông giống như sau:
+ TEST_VAR='Hello, World!' + echo 'Hello, World!' Hello, World!
2. Tùy chọn ‘-e’
Tùy chọn ‘-e’ giúp script dừng lại ngay lập tức nếu một lệnh trả về trạng thái khác không (non-zero exit status), cho phép bạn xác định chính xác vị trí xảy ra lỗi. Trạng thái khác không thường biểu thị một lỗi nào đó. Bạn có thể kết hợp tùy chọn ‘-e’ với các tùy chọn khác như ‘-x’ để thấy rõ những gì đang diễn ra trong quá trình thực thi.
#!/bin/bash -e FILE_NAME="/path/to/nonexistent/file" # Lệnh này sẽ thất bại nếu file không tồn tại ls $FILE_NAME echo "Đây là lệnh sẽ không được thực thi nếu lệnh trên thất bại."
Giải thích:
- Nếu file
/path/to/nonexistent/file
không tồn tại, lệnhls
sẽ trả về trạng thái khác không, khiến script dừng lại và lệnhecho
sau đó sẽ không được thực thi.
3. Tùy chọn ‘-v’
Tùy chọn ‘-v’ hiển thị các lệnh shell đúng như cách chúng được đọc từ script trước khi có bất kỳ thay thế hay mở rộng nào. Khi kết hợp ‘-v’ và ‘-x’, bạn có thể so sánh dòng lệnh trước và sau khi các biến được thay thế và mở rộng.
Ví Dụ sử dụng ‘-v’:
Tùy chọn ‘-v’ giúp bạn thấy từng dòng lệnh trong script như nó được viết ra, cho phép bạn kiểm tra cú pháp chính xác của từng lệnh. Khi kết hợp với ‘-x’, bạn có thể thấy rõ các giá trị sau khi các biến và ký tự đại diện được mở rộng.
#!/bin/bash -v echo "Dòng lệnh này sẽ được hiển thị nguyên văn trước khi thực thi." TEST_VAR="Test" echo $TEST_VAR
4. Kết hợp các tùy Chọn
Bạn có thể sử dụng nhiều tùy chọn cùng lúc, ví dụ ‘-ex’ hoặc ‘-xe’. Việc sử dụng một dấu gạch ngang trước mỗi tùy chọn là không cần thiết và thường không được khuyến khích.
Kết Luận
Trong bài viết này, bạn đã học cách sử dụng một số tùy chọn tích hợp trong Bash để hỗ trợ quá trình debug shell script. Bạn đã học về:
- Tùy chọn ‘-x’ để hiển thị các lệnh khi chúng được thực thi.
- Tùy chọn ‘-e’ để dừng script khi có lỗi xảy ra.
- Tùy chọn ‘-v’ để hiển thị các lệnh trong script chính xác như cách chúng được viết.
Những tùy chọn này là công cụ mạnh mẽ giúp bạn tìm và khắc phục lỗi trong các shell script hiệu quả.
Bài viết liên quan:
Viết chương trình Hello World Shell Script