Wie kann man einen EOF in Bash wiederholen? [geschlossen]

9

Nach der Suche scheint es das ASCII von EOF zu sein -1, aber wie kann ich echoes herausfinden?

Mein Zweck dabei ist es zu testen, ob es sich genauso verhält wie Drücken, ctrl-dwenn ich gerade echoraus bin EOF.

Gebietsschema
quelle

Antworten:

9

Es gibt keine Möglichkeit, einen EOF wiederzugeben. Ein EOF kann nur generiert werden, indem entweder das Ende einer Datei erreicht wird oder indem der auf die eofTerminaleinstellung gebundene Tastendruck ( CtrlDstandardmäßig) aufgerufen wird, wenn die zu lesende Datei an das Terminal gebunden ist.

Ignacio Vazquez-Abrams
quelle
ist nicht EOFwie -1in stdio.h definiert ? Warum kann ich es nicht wiedergeben, wenn wir seinen ASCII-Wert kennen?
Gebietsschema
Na und. Ein intmit dem Wert -1 (oder 4294967295, wenn wir die vorzeichenlose Version berücksichtigen) kann ohnehin kein Zeichen sein, da Zeichen nur einen Wert von 0 bis einschließlich 255 haben können.
Ignacio Vazquez-Abrams
Woher weißt du, dass es überhaupt ein ist int?
Gebietsschema
5
Weil ich Dinge wie die fgetc(3)Manpage anschaue .
Ignacio Vazquez-Abrams
8

In bash können Sie schreiben exec 1>&-, um den als stdout bekannten Dateideskriptor zu schließen.

Wie Ignacio bereits sagte, ist EOF kein Charakter, daher macht die Frage, wie man "EOF" wiedergibt, überhaupt keinen Sinn. Sie können Zeichen (Bytes) wiedergeben oder einen Dateideskriptor schließen, aber niemals einen EOF wiedergeben.

Lekro
quelle