[ShellScript] Hướng dẫn cách debug code shell script trên Linux

Khi mà lập trình bash shell script, thì ngoài những hoạt động lập trình bình thường thì bạn luôn cần 1 phương tiện để hỗ trợ theo dõi flow code lập trình chạy để có thể debug lỗi. Vậy nên với bài viết mình sẽ chỉ các bạn cách chạy debug code shell script vô cùng tiện lợi.

Giả sử mình có 1 file bash shell như sau :

# cat /root/demo.sh
#!/bin/bash
for i in `seq 0 10`
do
    if [[ $(expr $i % 2) -eq 0 ]];then
        echo $i
    fi
done

exit 0

 
Cách 1:

– Chạy trực tiếp khi gọi script từ môi trường terminal với option ‘-x‘ để bật tính năng debug code shell script, với lệnh ‘bash/sh‘ tạo môi trường bash trực tiếp để chạy script.

# bash -x /root/demo.sh
++ seq 0 5
+ for i in '`seq 0 5`'
++ expr 0 % 2
+ [[ 0 -eq 0 ]]
+ echo 0
0
+ for i in '`seq 0 5`'
++ expr 1 % 2
+ [[ 1 -eq 0 ]]
+ for i in '`seq 0 5`'
++ expr 2 % 2
+ [[ 0 -eq 0 ]]
+ echo 2
2
+ for i in '`seq 0 5`'
++ expr 3 % 2
+ [[ 1 -eq 0 ]]
+ for i in '`seq 0 5`'
++ expr 4 % 2
+ [[ 0 -eq 0 ]]
+ echo 4
4
+ for i in '`seq 0 5`'
++ expr 5 % 2
+ [[ 1 -eq 0 ]]

 
Chú thích:
-x
: sẽ hiển thị các dòng lệnh cũng như các biến lệnh từng dòng khi nó được thực thi. Lưu ý, nếu bạn viết nhiều function mà không gọi function thì nó cũng sẽ không hiển thị gì đâu nhé. Nó chỉ hiển thị những gì được gọi chạy thôi.

 
Cách 2:

– Set chức năng ‘debug‘ vào nội dung code trực tiếp.

#!/bin/bash
# Bat chuc nang debug
set -x

for i in `seq 0 10`
do
    if [[ $(expr $i % 2) -eq 0 ]];then
         echo $i
    fi
done

# Tat chuc nang debug
set +x

exit 0

 
– Lúc này bạn chạy script trực tiếp không cần option hỗ trợ thì nó sẽ chạy ở chế độ debug như ở cách 1.

# ./demo.sh
++ seq 0 5
+ for i in '`seq 0 5`'
++ expr 0 % 2
+ [[ 0 -eq 0 ]]
+ echo 0
0
+ for i in '`seq 0 5`'
++ expr 1 % 2
+ [[ 1 -eq 0 ]]
+ for i in '`seq 0 5`'
++ expr 2 % 2
+ [[ 0 -eq 0 ]]
+ echo 2
2
+ for i in '`seq 0 5`'
++ expr 3 % 2
+ [[ 1 -eq 0 ]]
+ for i in '`seq 0 5`'
++ expr 4 % 2
+ [[ 0 -eq 0 ]]
+ echo 4
4
+ for i in '`seq 0 5`'
++ expr 5 % 2
+ [[ 1 -eq 0 ]]

 
Hy vọng các bạn sẽ có thêm cái mẹo để hỗ trợ việc debug code shell script trong lập trình bash shell nhé.

Previous article[DirectAdmin] Hướng dẫn cấu hình DKIM trên Direct Admin
Next article[Tech] Mạng xã hội video ‘Vine’ chính thức bị khai tử
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !