Làm thế nào để lặp lại một EOF trong bash? [đóng cửa]


9

Sau khi tìm kiếm, có vẻ như ascii của EOF là -1, nhưng làm thế nào tôi có thể echohiểu được?

Mục đích của tôi để làm điều này là để kiểm tra xem nó có hoạt động giống như nhấn hay ctrl-dkhông nếu tôi echora ngoài EOF.

Câu trả lời:


9

Không có cách nào để lặp lại EOF. Một EOF chỉ có thể được tạo bằng cách đến cuối tệp hoặc bằng cách gọi phím nhấn được gắn vào eofcài đặt đầu cuối ( CtrlDtheo mặc định) khi tệp đang đọc được gắn vào đầu cuối.


không EOFđược định nghĩa như -1trong stdio.h? Tại sao chúng ta không thể lặp lại nếu chúng ta biết giá trị ascii của nó?
miền địa phương

Vậy thì sao. Một intgiá trị -1 (hoặc 4294967295 nếu chúng tôi xem xét phiên bản không dấu) dù sao cũng không thể là một ký tự vì các ký tự chỉ có thể có giá trị từ 0 đến 255.
Ignacio Vazquez-Abrams

Làm thế nào để bạn biết nó là một intở nơi đầu tiên?
miền địa phương

5
Bởi vì tôi làm những việc như nhìn vào fgetc(3)trang đàn ông.
Ignacio Vazquez-Abrams

8

Trong bash, bạn có thể viết exec 1>&-để đóng bộ mô tả tệp được gọi là thiết bị xuất chuẩn.

Như Ignacio đã nói, EOF không phải là một nhân vật, vì vậy câu hỏi làm thế nào để "lặp lại EOF" không có ý nghĩa gì ngay từ đầu. Bạn có thể lặp lại các ký tự (byte) hoặc bạn có thể đóng bộ mô tả tệp, nhưng bạn không bao giờ có thể lặp lại EOF.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.