Làm cách nào để đóng stdin trong tập lệnh shell?


13

Tôi có một chương trình hoạt động sai mà tôi cần gọi từ kịch bản của mình. Nó thoát ra ngay khi nhìn thấy một cái gì đó trên stdin. Có cách nào để đóng stdin không?

Câu trả lời:



8

Chỉ cần đường ống trong một chương trình không có đầu ra:

: | misbehaving_program

Ồ, cái gì đây? ':' Làm gì?
KaiserKatze

":" là một lệnh nội bộ của shell mà không làm gì cả. Nó cho phép bạn giới thiệu ý kiến, hoặc có thể được sử dụng để chuyển hướng. Ví dụ ":> file" tạo một tệp trống. Hoặc ": |" trong trường hợp này cung cấp một luồng trống cho lệnh.
Raúl Salinas-Monteagudo

8

Tìm thấy nó, bạn có thể đóng stdin với:

exec 0<&-

5

Theo những gì bạn nói, bạn có thể khắc phục vấn đề của mình bằng cách đơn giản

pickyProgram < /dev/null
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.