Làm thế nào để tôi gỡ lỗi hoàn thành bash?


14

Tôi đã tạo một số hàm hoàn thành bash mà tất cả dường như hoạt động độc lập nhưng mang lại cho tôi kết quả không mong muốn khi tôi cố gắng hoàn thành tab với chúng.

Có thể kết nối bashdb, sau đó thử tab hoàn thành một cái gì đó và bước qua để gỡ lỗi và xác định điều gì đang xảy ra không?


2
Chỉ cần thêm tôi vào xu: bạn nên sử dụng set -xbash để gỡ lỗi các tập lệnh của mình. Sử dụng set +xđể vô hiệu hóa.

Câu trả lời:


6

set -x

Nếu bạn set -xtrong phiên tương tác hoặc chính tập lệnh tự động hoàn thành, (gần?) Mỗi ​​lệnh và kết quả của nó sẽ được in ra. Điều này bao gồm các công việc được thực hiện bên trong tập lệnh tự động hoàn thành.

Điều này sau đó có thể được yên tĩnh trở lại với set +x.

-x

Sau khi mở rộng từng lệnh đơn giản, đối với lệnh, lệnh case, lệnh chọn hoặc số học cho lệnh, hiển thị giá trị mở rộng của PS4, tiếp theo là lệnh và các đối số mở rộng hoặc danh sách từ liên quan.

-Từ hướng dẫn sử dụng Bash # Bộ cài đặt sẵn


2

Chỉ cần đăng nhập / đầu ra từ các chức năng hoàn thành bash; vì rất có thể chúng không có khoa học tên lửa, nên việc này khá dễ thực hiện. Có thể kết nối bashdb, nhưng cảm thấy không cần thiết ...


Việc kết nối bashdb sẽ đơn giản hơn nhiều và, tôi mong đợi, nhanh hơn việc thêm các câu lệnh log vào các tập lệnh. Tuy nhiên, tôi không biết nếu có thể, và việc thiếu câu trả lời sẽ cho thấy điều đó là không thể. Tôi đã quản lý để giải quyết vấn đề của mình bằng cách đăng nhập trạng thái vào một tệp như bạn đề xuất, nhưng việc xuất thông tin đăng nhập vào thiết bị đầu cuối không hữu ích khi làm việc với các phần hoàn thành.
Dan Midwood

3
@DanUnwood: Sử dụng hai thiết bị đầu cuối (ví dụ: màn hình + tách). Trong một, chạy hoàn thành, trong lần thứ hai, tail -fnhật ký.
choroba

@choroba: Đẹp quá. : D
Tamara Wijsman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.