Bạn không cần phải đặt một đọc trong mỗi dòng, chỉ cần thêm một cái bẫy như sau vào kịch bản bash của bạn, nó có tác dụng bạn muốn, ví dụ.
#!/usr/bin/env bash
set -x
trap read debug
< YOUR CODE HERE >
Hoạt động, chỉ cần thử nghiệm với bash v4.2.8 và v3.2.25.
phiên bản cải tiến
Nếu kịch bản của bạn đang đọc nội dung từ các tập tin, các liệt kê ở trên sẽ không làm việc. Cách giải quyết có thể giống như ví dụ sau.
#!/usr/bin/env bash
echo "Press CTRL+C to proceed."
trap "pkill -f 'sleep 1h'" INT
trap "set +x ; sleep 1h ; set -x" DEBUG
< YOUR CODE HERE >
Để ngăn chặn kịch bản bạn sẽ phải giết nó từ một vỏ trong trường hợp này.
ALTERNATIVE1
Nếu bạn chỉ đơn giản là muốn chờ đợi một vài giây trước khi tiến hành lệnh tiếp theo trong kịch bản của bạn ví dụ sau đây có thể làm việc cho bạn.
#!/usr/bin/env bash
trap "set +x; sleep 5; set -x" DEBUG
< YOUR CODE HERE >
Tôi đang thêm set + x và set -x vào lệnh bẫy để làm cho đầu ra dễ đọc hơn.
Nguồn
2012-01-31 13:52:40
lẽ rộng hơn xem thêm https://stackoverflow.com/questions/951336/how-to-debug-a-bash-script/45096876#45096876 – tripleee