Tôi có một kịch bản shell set -xđể có đầu ra dài dòng / gỡ lỗi:
#!/bin/bash
set -x
command1
command2
...Đầu ra trông như thế này:
+ command1
whatever output from command1
+ command2
whatever output from command2Vấn đề của tôi là, sản lượng vỏ (do set -x) đi vào stderr, trộn với đầu ra của các lệnh ( command1, command2, ...). Tôi sẽ rất vui khi có đầu ra "bình thường" trên màn hình (như tập lệnh sẽ chạy mà không có set -x) và đầu ra "thêm" của bash riêng biệt trong một tệp.
Vì vậy, tôi muốn có cái này trên màn hình:
whatever output from command1
whatever output from command2và điều này trong một tệp nhật ký:
+ command1
+ command2(cũng tốt nếu tệp nhật ký có mọi thứ với nhau)
Các set -x 2> filerõ ràng doens't mất tác dụng đúng, bởi vì nó không phải là đầu ra của lệnh set, nhưng nó thay đổi hành vi của bash.
Việc sử dụng bash 2> filecho toàn bộ tập lệnh cũng không thực hiện đúng, vì nó cũng chuyển hướng stderr của mọi lệnh chạy trong shell này, vì vậy tôi không thấy thông báo lỗi của các lệnh.