¿Cómo cierro stdin en un script de shell?

13

Tengo un programa de comportamiento incorrecto al que necesito llamar desde mi script. Sale tan pronto como ve algo en stdin. ¿Hay alguna manera de cerrar stdin?

Helado con frutas y nueces
fuente

Respuestas:

21

¿Hay alguna manera de cerrar stdin?

Descriptores de archivo de cierre

  • n<&- Cerrar el descriptor del archivo de entrada n.

  • 0<&-o <&-Cerrar stdin.

Fuente Capítulo 20. Redirección de E / S

DavidPostill
fuente
8

Simplemente canalice en un programa sin salida:

: | misbehaving_program
choroba
fuente
Wow, que es esto? ¿Que es lo que hace?
KaiserKatze
":" es un comando interno del shell que no hace nada. Le permite introducir comentarios o puede usarse para redireccionamientos. Por ejemplo ":> archivo" crea un archivo vacío. O ": |" en este caso alimenta una secuencia vacía al comando.
Raúl Salinas-Monteagudo
8

Lo encontré, puedes cerrar stdin con:

exec 0<&-
Helado con frutas y nueces
fuente
5

Según lo que diga, puede solucionar su problema simplemente

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