Tôi có một tập lệnh bash khá dài gọi ra một vài lệnh bên ngoài (git clone
, wget
, apt-get
và các loại khác) in nhiều thứ vào đầu ra tiêu chuẩn.Làm cách nào để quản lý độ dài nhật ký bên trong tập lệnh shell?
Tôi muốn tập lệnh có một vài tùy chọn độ dài để in mọi thứ từ lệnh bên ngoài, phiên bản tóm tắt của nó (ví dụ: "Cài đặt phụ thuộc ...", "Biên dịch ...", v.v.) ở tất cả. Nhưng làm thế nào tôi có thể làm điều đó mà không làm lộn xộn tất cả các mã của tôi?
Tôi đã suy nghĩ về các giải pháp khả thi cho điều này: Một là tạo một hàm bao bọc chạy các lệnh bên ngoài và in những gì cần thiết cho đầu ra tiêu chuẩn, tùy thuộc vào các tùy chọn được đặt lúc bắt đầu. Điều này có vẻ dễ dàng hơn để thực hiện, nhưng nó có nghĩa là thêm rất nhiều lộn xộn thêm vào mã.
Giải pháp khác là gửi tất cả đầu ra tới một vài tệp bên ngoài và khi phân tích các đối số ở đầu tập lệnh, chạy tail -f
trên tệp đó nếu độ dài được xác định. Điều này sẽ rất dễ thực hiện, nhưng có vẻ khá hacky với tôi và tôi lo ngại về tác động của nó.
Cái nào tốt hơn? Tôi cũng mở cửa cho các giải pháp khác.
Bạn đã xem là sử dụng 'thiết -x '? Gọi lệnh này ở đầu tập lệnh của bạn và mọi lệnh sau sẽ được lặp lại. Bạn có thể tắt nó bằng 'set + x'. –
Ngoài ra, bạn cũng có thể sử dụng 'set -e' để hủy bỏ tập lệnh khi bất kỳ lệnh nào thoát với trạng thái khác 0. –
Không, đó không phải là những gì tôi cần. Tôi biết những lệnh nào tôi đang chạy, tôi chỉ muốn một cách để làm cho kịch bản của mình in mọi thứ mà chúng xuất ra hoặc không phụ thuộc vào một số tùy chọn. Đó là điều của người dùng nhiều hơn mã thực tế. – Ocab19