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ụ, patch
sẽ hỏi phải làm gì với một bản vá đảo ngược và svn
sẽ 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 patch
rằ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 svn
sẽ 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-interactive
thự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/tty
khô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)