After search it seems the ascii of EOF is -1,but how can I echo it out?
My purpose of doing this is to test whether it behaves the same as pressing ctrl-d if I just echo out EOF.
There is no way to echo out an EOF. An EOF can only be generated either by reaching the end of a file or by invoking the keypress bound to the eof terminal setting (CtrlD by default) when the file being read is bound to the terminal.
In bash you could write exec 1>&- in order to close the file descriptor known as stdout.
As Ignacio already said, EOF is not a character, so the question how to "echo EOF" doesn't make any sense in the first place. You can echo characters (bytes) or you can close a file descriptor, but you can never echo an EOF.
EOFdefined as-1in stdio.h? why can't echo it out if we know its ascii value? – locale Jun 08 '11 at 09:13intwith the value of -1 (or 4294967295 if we consider the unsigned version) can't possibly be a character anyway since characters can only have a value from 0 to 255 inclusive. – Ignacio Vazquez-Abrams Jun 08 '11 at 09:15intin the first place? – locale Jun 08 '11 at 09:18fgetc(3)man page. – Ignacio Vazquez-Abrams Jun 08 '11 at 09:20