Bagaimana cara menggemakan EOF di bash? [Tutup]

9

Setelah pencarian tampaknya ascii dari EOF adalah -1, tetapi bagaimana saya echobisa keluar?

Tujuan saya melakukan ini adalah untuk menguji apakah berperilaku sama dengan menekan ctrl-djika saya baru saja echokeluar EOF.

lokal
sumber

Jawaban:

9

Tidak ada cara untuk menggemakan EOF. EOF hanya dapat dihasilkan dengan mencapai akhir file atau dengan menekan tombol yang terikat pada eofpengaturan terminal ( CtrlDsecara default) ketika file yang sedang dibaca terikat ke terminal.

Ignacio Vazquez-Abrams
sumber
tidak EOFdidefinisikan seperti -1di stdio.h? mengapa tidak bisa mengulanginya jika kita tahu nilai ascii-nya?
lokal
Terus. Sebuah intdengan nilai -1 (atau 4294967295 jika kami menganggap versi yang tidak ditandatangani) tidak mungkin menjadi karakter karena karakter hanya dapat memiliki nilai dari 0 hingga 255 inklusif.
Ignacio Vazquez-Abrams
bagaimana Anda tahu itu adalah yang intpertama?
lokal
5
Karena saya melakukan hal-hal seperti melihat fgetc(3)halaman manual.
Ignacio Vazquez-Abrams
8

Di bash Anda bisa menulis exec 1>&-untuk menutup file descriptor yang dikenal sebagai stdout.

Seperti yang sudah dikatakan Ignacio, EOF bukan karakter, jadi pertanyaan bagaimana "menggemakan EOF" tidak masuk akal sejak awal. Anda dapat menggemakan karakter (byte) atau Anda dapat menutup deskriptor file, tetapi Anda tidak pernah dapat menggemakan EOF.

lekro
sumber