Script đơn giản là danh sách lệnh lưu trong file. Thay vì gõ lần lượt lệnh trên terminal, user có thể lưu tất cả vào file và gọi lại file để thực thi lệnh nhiều lần.
Khi học scripting hoặc giai đoạn đầu viết script, thường viết script ngắn vài dòng. Debug bằng cách nhìn đầu ra và đảm bảo hoạt động như ý định.
Tuy nhiên, khi viết script dài hàng nghìn dòng, ví dụ script sửa cài đặt hệ thống, backup quan trọng qua mạng..., chỉ nhìn đầu ra không đủ tìm bug trong script.
Do đó, trong series debug shell script Linux này, sẽ đi qua cách bật debug shell script, chuyển sang giải thích các chế độ debug shell script và cách dùng trong các phần tiếp theo.
Cách bắt đầu một Script
Script khác file khác bằng dòng đầu chứa #! (She-bang – định nghĩa loại file) và tên đường dẫn (đường dẫn đến interpreter) báo cho hệ thống file là tập lệnh được thông dịch bởi chương trình chỉ định (interpreter).
Ví dụ "dòng đầu" các loại script:
#!/bin/sh [Cho sh scripting] #!/bin/bash [Cho bash scripting] #!/usr/bin/perl [Cho perl programming] #!/bin/awk -f [Cho awk scripting]
Lưu ý: Dòng đầu hoặc #! có thể bỏ nếu script chỉ chứa lệnh hệ thống tiêu chuẩn, không có chỉ thị shell nội bộ.
Cách thực thi Shell Script trên Linux
Cú pháp thông thường gọi shell script:
$ script_name argument1 ... argumentN
Dạng khác chỉ định rõ shell thực thi script:
$ shell script_name argument1 ... argumentN
Ví dụ:
$ /bin/bash script_name argument1 ... argumentN [Cho bash scripting] $ /bin/ksh script_name argument1 ... argumentN [Cho ksh scripting] $ /bin/sh script_name argument1 ... argumentN [Cho sh scripting]
Đối với script không có #! dòng đầu và chỉ chứa lệnh hệ thống cơ bản như:
#script containing standard system commands cd /home/$USER mkdir tmp echo "tmp directory created under /home/$USER"
Chỉ cần cấp quyền thực thi và chạy:
$ chmod +x script_name $ ./script_name
Phương pháp bật Shell Script Debugging Mode
Các tùy chọn debug shell script chính:
-v(verbose) – yêu cầu shell hiển thị tất cả dòng script khi đọc, bật verbose mode.-n(noexec/no execution) – chỉ thị shell đọc tất cả lệnh nhưng không thực thi. Bật syntax checking mode.-x(xtrace/execution trace) – yêu cầu shell hiển thị tất cả lệnh và tham số trên terminal khi thực thi. Bật shell tracing mode.
1. Sửa đổi dòng đầu Shell Script
Cơ chế đầu tiên: thay đổi dòng đầu script như dưới, bật debug cho toàn bộ script.
#!/bin/sh option(s)
Trong dạng trên, option là một hoặc kết hợp các tùy chọn debug trên.
2. Gọi Shell với tùy chọn Debugging
Cách thứ hai: gọi shell kèm tùy chọn debug, cũng bật debug toàn bộ script.
$ shell option(s) script_name argument1 ... argumentN
Ví dụ:
$ /bin/bash option(s) script_name argument1 ... argumentN
3. Dùng lệnh built-in set của Shell
Cách thứ ba: dùng lệnh built-in set debug đoạn cụ thể của shell script như hàm. Cơ chế này quan trọng, cho phép bật debug tại bất kỳ đoạn nào của script.
Bật debug mode dùng set dạng sau, option là bất kỳ tùy chọn debug nào.
$ set option
Để bật debug mode:
$ set -option
Để tắt debug mode:
$ set +option
Thêm, nếu bật nhiều chế độ debug ở các đoạn khác nhau, có thể tắt tất cả cùng lúc:
$ set -
Đó là tất cả về bật shell script debugging mode. Như đã thấy, có thể debug toàn bộ script hoặc đoạn cụ thể.
Hai phần tới series này sẽ bao quát cách dùng tùy chọn debug shell script cho verbose, syntax checking và shell tracing debugging modes với ví dụ.
Quan trọng: đừng quên hỏi câu hỏi hoặc góp ý qua phần bình luận. Cho đến lúc đó, hãy kết nối Tecmint.