Bagaimana cara menutup stdin dalam skrip shell?

13

Saya memiliki program nakal yang harus saya panggil dari skrip saya. Keluar segera setelah melihat sesuatu di stdin. Apakah ada cara untuk menutup stdin?

Sundae
sumber

Jawaban:

21

Apakah ada cara untuk menutup stdin?

Menutup Penjelas File

  • n<&- Tutup uraian file input n.

  • 0<&-atau <&-Tutup stdin.

Sumber Bab 20. Pengalihan I / O

DavidPostill
sumber
8

Hanya pipa dalam program tanpa output:

: | misbehaving_program
choroba
sumber
Wow, apa ini? Apa yang dilakukan ':'?
KaiserKatze
":" adalah perintah internal shell yang tidak melakukan apa pun. Ini memungkinkan Anda memperkenalkan komentar, atau dapat digunakan untuk pengalihan. Misalnya ":> file" membuat file kosong. Atau ": |" dalam hal ini mengumpan aliran kosong ke perintah.
Raúl Salinas-Monteagudo
8

Menemukannya, Anda dapat menutup stdin dengan:

exec 0<&-
Sundae
sumber
5

Menurut apa yang Anda katakan, Anda dapat memperbaiki masalah Anda dengan sederhana

pickyProgram < /dev/null
Raúl Salinas-Monteagudo
sumber