Tôi đang điều tra hành vi của một tập lệnh thường chạy dưới dạng một quy trình tự động (ví dụ: cron, Jenkins). Kịch bản có thể (cuối cùng) gọi các lệnh hoạt động khác nhau (tìm kiếm đầu vào của người dùng) khi chạy tương tác; ví dụ, patchsẽ hỏi phải làm gì với một bản vá đảo ngược và svnsẽ hỏi mật khẩu, nhưng tôi cần xem điều gì xảy ra khi chúng chạy không tương tác.
Thuyết phục patchrằng nó không tương tác là khá dễ dàng; Tôi chỉ cần chuyển hướng stdoutđể trở thành một người không tty:
$ </dev/null > >(cat) /path/to/myscript --args
Tuy nhiên svnsẽ kết nối với thiết bị đầu cuối kiểm soát nếu nó tồn tại; chỉnh sửa các tập lệnh để vượt qua --non-interactivethực sự không phải là một lựa chọn vì điều này đến từ nhiều cấp độ và rất khó để chắc chắn tôi đã tìm thấy mọi lời mời.
Có cách nào để gọi một kịch bản / lệnh không tương tác, mà không có thiết bị đầu cuối kiểm soát (vì vậy /dev/ttykhông tồn tại)? Tôi muốn stdout / stderr vẫn đi đến thiết bị đầu cuối của tôi.
(Tôi tìm thấy câu hỏi Chạy kịch bản trong một vỏ không tương tác? Nhưng câu trả lời cho rằng thảo luận về sự khác biệt giữa các cron và môi trường người dùng;. Tôi đã loại bỏ tất cả những khác biệt trừ phi tương tác)