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é.