Wie schließe ich stdin in einem Shell-Skript?

13

Ich habe ein schlechtes Programm, das ich von meinem Skript aus aufrufen muss. Es wird beendet, sobald es etwas auf stdin sieht. Gibt es eine Möglichkeit, stdin zu schließen?

Eisbecher
quelle

Antworten:

21

Gibt es eine Möglichkeit, stdin zu schließen?

Schließen von Dateideskriptoren

  • n<&- Schließen Sie den Deskriptor der Eingabedatei.

  • 0<&-oder <&-Schließen Sie stdin.

Quelle Kapitel 20. E / A-Umleitung

DavidPostill
quelle
8

Leiten Sie einfach ein Programm ohne Ausgabe ein:

: | misbehaving_program
Choroba
quelle
Wow, was ist das? Was macht ':'?
KaiserKatze
":" ist ein interner Befehl der Shell, der nichts tut. Sie können Kommentare einfügen oder für Umleitungen verwenden. Zum Beispiel erstellt ":> Datei" eine leere Datei. Oder ": |" In diesem Fall wird dem Befehl ein leerer Stream zugeführt.
Raúl Salinas-Monteagudo
8

Gefunden, können Sie stdin schließen mit:

exec 0<&-
Eisbecher
quelle
5

Je nachdem, was Sie sagen, können Sie Ihr Problem einfach beheben

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