Reading the bash man page, 'read -n 1' looks like a nice start. I am not sure what happens when you read a line feed or white space, so I guess I have to try it. I wrote all256 to put out bytes 0x00 through 0xff.
Code :
$ all256|while read -n 1 c
> do
> echo read "'$c'"
> done
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read '
read ''
read ''
read '
'
read '
'
'ead '
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read '
read ''
read ''
read ''
read ''
read ''
read '!'
read '"'
read '#'
read '$'
read '%'
read '&'
read '''
read '('
read ')'
read '*'
read '+'
read ','
read '-'
read '.'
read '/'
read '0'
read '1'
read '2'
read '3'
read '4'
read '5'
read '6'
read '7'
read '8'
read '9'
read ':'
read ';'
read '<'
read '='
read '>'
read '?'
read '@'
read 'A'
read 'B'
read 'C'
read 'D'
read 'E'
read 'F'
read 'G'
read 'H'
read 'I'
read 'J'
read 'K'
read 'L'
read 'M'
read 'N'
read 'O'
read 'P'
read 'Q'
read 'R'
read 'S'
read 'T'
read 'U'
read 'V'
read 'W'
read 'X'
read 'Y'
read 'Z'
read '['
read ']'
read '^'
read '_'
read '`'
read 'a'
read 'b'
read 'c'
read 'd'
read 'e'
read 'f'
read 'g'
read 'h'
read 'i'
read 'j'
read 'k'
read 'l'
read 'm'
read 'n'
read 'o'
read 'p'
read 'q'
read 'r'
read 's'
read 't'
read 'u'
read 'v'
read 'w'
read 'x'
read 'y'
read 'z'
read '{'
read '|'
read '}'
read '~'
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ''
read ' '
read '¡'
read '¢'
read '£'
read '¤'
read '¥'
read '¦'
read '§'
read '¨'
read '©'
read 'ª'
read '«'
read '¬'
read ''
read '®'
read '¯'
read '°'
read '±'
read '²'
read '³'
read '´'
read 'µ'
read '¶'
read '·'
read '¸'
read '¹'
read 'º'
read '»'
read '¼'
read '½'
read '¾'
read '¿'
read 'À'
read 'Á'
read 'Â'
read 'Ã'
read 'Ä'
read 'Å'
read 'Æ'
read 'Ç'
read 'È'
read 'É'
read 'Ê'
read 'Ë'
read 'Ì'
read 'Í'
read 'Î'
read 'Ï'
read 'Ð'
read 'Ñ'
read 'Ò'
read 'Ó'
read 'Ô'
read 'Õ'
read 'Ö'
read '×'
read 'Ø'
read 'Ù'
read 'Ú'
read 'Û'
read 'Ü'
read 'Ý'
read 'Þ'
read 'ß'
read 'à'
read 'á'
read 'â'
read 'ã'
read 'ä'
read 'å'
read 'æ'
read 'ç'
read 'è'
read 'é'
read 'ê'
read 'ë'
read 'ì'
read 'í'
read 'î'
read 'ï'
read 'ð'
read 'ñ'
read 'ò'
read 'ó'
read 'ô'
read 'õ'
read 'ö'
read '÷'
read 'ø'
read 'ù'
read 'ú'
read 'û'
read 'ü'
read 'ý'
read 'þ'
read 'ÿ'
$ all256|while read -n 1 c; do echo read "'$c'"; done|cat -vt
read ''
read '^A'
read '^B'
read '^C'
read '^D'
read '^E'
read '^F'
read '^G'
read '^H'
read ''
read ''
read '^K'
read '^L'
read '^M'
read '^N'
read '^O'
read '^P'
read '^Q'
read '^R'
read '^S'
read '^T'
read '^U'
read '^V'
read '^W'
read '^X'
read '^Y'
read '^Z'
read '^['
read '^\'
read '^]'
read '^^'
read '^_'
read ''
read '!'
read '"'
read '#'
read '$'
read '%'
read '&'
read '''
read '('
read ')'
read '*'
read '+'
read ','
read '-'
read '.'
read '/'
read '0'
read '1'
read '2'
read '3'
read '4'
read '5'
read '6'
read '7'
read '8'
read '9'
read ':'
read ';'
read '<'
read '='
read '>'
read '?'
read '@'
read 'A'
read 'B'
read 'C'
read 'D'
read 'E'
read 'F'
read 'G'
read 'H'
read 'I'
read 'J'
read 'K'
read 'L'
read 'M'
read 'N'
read 'O'
read 'P'
read 'Q'
read 'R'
read 'S'
read 'T'
read 'U'
read 'V'
read 'W'
read 'X'
read 'Y'
read 'Z'
read '['
read ']'
read '^'
read '_'
read '`'
read 'a'
read 'b'
read 'c'
read 'd'
read 'e'
read 'f'
read 'g'
read 'h'
read 'i'
read 'j'
read 'k'
read 'l'
read 'm'
read 'n'
read 'o'
read 'p'
read 'q'
read 'r'
read 's'
read 't'
read 'u'
read 'v'
read 'w'
read 'x'
read 'y'
read 'z'
read '{'
read '|'
read '}'
read '~'
read '^?'
read 'M-^@'
read 'M-^A'
read 'M-^B'
read 'M-^C'
read 'M-^D'
read 'M-^E'
read 'M-^F'
read 'M-^G'
read 'M-^H'
read 'M-^I'
read 'M-
'
read 'M-^K'
read 'M-^L'
read 'M-^M'
read 'M-^N'
read 'M-^O'
read 'M-^P'
read 'M-^Q'
read 'M-^R'
read 'M-^S'
read 'M-^T'
read 'M-^U'
read 'M-^V'
read 'M-^W'
read 'M-^X'
read 'M-^Y'
read 'M-^Z'
read 'M-^['
read 'M-^\'
read 'M-^]'
read 'M-^^'
read 'M-^_'
read 'M- '
read 'M-!'
read 'M-"'
read 'M-#'
read 'M-$'
read 'M-%'
read 'M-&'
read 'M-''
read 'M-('
read 'M-)'
read 'M-*'
read 'M-+'
read 'M-,'
read 'M--'
read 'M-.'
read 'M-/'
read 'M-0'
read 'M-1'
read 'M-2'
read 'M-3'
read 'M-4'
read 'M-5'
read 'M-6'
read 'M-7'
read 'M-8'
read 'M-9'
read 'M-:'
read 'M-;'
read 'M-<'
read 'M-='
read 'M->'
read 'M-?'
read 'M-@'
read 'M-A'
read 'M-B'
read 'M-C'
read 'M-D'
read 'M-E'
read 'M-F'
read 'M-G'
read 'M-H'
read 'M-I'
read 'M-J'
read 'M-K'
read 'M-L'
read 'M-M'
read 'M-N'
read 'M-O'
read 'M-P'
read 'M-Q'
read 'M-R'
read 'M-S'
read 'M-T'
read 'M-U'
read 'M-V'
read 'M-W'
read 'M-X'
read 'M-Y'
read 'M-Z'
read 'M-['
read 'M-\'
read 'M-]'
read 'M-^'
read 'M-_'
read 'M-`'
read 'M-a'
read 'M-b'
read 'M-c'
read 'M-d'
read 'M-e'
read 'M-f'
read 'M-g'
read 'M-h'
read 'M-i'
read 'M-j'
read 'M-k'
read 'M-l'
read 'M-m'
read 'M-n'
read 'M-o'
read 'M-p'
read 'M-q'
read 'M-r'
read 'M-s'
read 'M-t'
read 'M-u'
read 'M-v'
read 'M-w'
read 'M-x'
read 'M-y'
read 'M-z'
read 'M-{'
read 'M-|'
read 'M-}'
read 'M-~'
read 'M-^?'
$ all256|while read -en 1 c; do echo read "'$c'"; done|cat -vt
read ''
read '^A'
read '^B'
read '^C'
read '^D'
read '^E'
read '^F'
read '^G'
read '^H'
read ''
read ''
read '^K'
read '^L'
read '^M'
read '^N'
read '^O'
read '^P'
read '^Q'
read '^R'
read '^S'
read '^T'
read '^U'
read '^V'
read '^W'
read '^X'
read '^Y'
read '^Z'
read '^['
read '^\'
read '^]'
read '^^'
read '^_'
read ''
read '!'
read '"'
read '#'
read '$'
read '%'
read '&'
read '''
read '('
read ')'
read '*'
read '+'
read ','
read '-'
read '.'
read '/'
read '0'
read '1'
read '2'
read '3'
read '4'
read '5'
read '6'
read '7'
read '8'
read '9'
read ':'
read ';'
read '<'
read '='
read '>'
read '?'
read '@'
read 'A'
read 'B'
read 'C'
read 'D'
read 'E'
read 'F'
read 'G'
read 'H'
read 'I'
read 'J'
read 'K'
read 'L'
read 'M'
read 'N'
read 'O'
read 'P'
read 'Q'
read 'R'
read 'S'
read 'T'
read 'U'
read 'V'
read 'W'
read 'X'
read 'Y'
read 'Z'
read '['
read ']'
read '^'
read '_'
read '`'
read 'a'
read 'b'
read 'c'
read 'd'
read 'e'
read 'f'
read 'g'
read 'h'
read 'i'
read 'j'
read 'k'
read 'l'
read 'm'
read 'n'
read 'o'
read 'p'
read 'q'
read 'r'
read 's'
read 't'
read 'u'
read 'v'
read 'w'
read 'x'
read 'y'
read 'z'
read '{'
read '|'
read '}'
read '~'
read '^?'
read 'M-^@'
read 'M-^A'
read 'M-^B'
read 'M-^C'
read 'M-^D'
read 'M-^E'
read 'M-^F'
read 'M-^G'
read 'M-^H'
read 'M-^I'
read 'M-
'
read 'M-^K'
read 'M-^L'
read 'M-^M'
read 'M-^N'
read 'M-^O'
read 'M-^P'
read 'M-^Q'
read 'M-^R'
read 'M-^S'
read 'M-^T'
read 'M-^U'
read 'M-^V'
read 'M-^W'
read 'M-^X'
read 'M-^Y'
read 'M-^Z'
read 'M-^['
read 'M-^\'
read 'M-^]'
read 'M-^^'
read 'M-^_'
read 'M- '
read 'M-!'
read 'M-"'
read 'M-#'
read 'M-$'
read 'M-%'
read 'M-&'
read 'M-''
read 'M-('
read 'M-)'
read 'M-*'
read 'M-+'
read 'M-,'
read 'M--'
read 'M-.'
read 'M-/'
read 'M-0'
read 'M-1'
read 'M-2'
read 'M-3'
read 'M-4'
read 'M-5'
read 'M-6'
read 'M-7'
read 'M-8'
read 'M-9'
read 'M-:'
read 'M-;'
read 'M-<'
read 'M-='
read 'M->'
read 'M-?'
read 'M-@'
read 'M-A'
read 'M-B'
read 'M-C'
read 'M-D'
read 'M-E'
read 'M-F'
read 'M-G'
read 'M-H'
read 'M-I'
read 'M-J'
read 'M-K'
read 'M-L'
read 'M-M'
read 'M-N'
read 'M-O'
read 'M-P'
read 'M-Q'
read 'M-R'
read 'M-S'
read 'M-T'
read 'M-U'
read 'M-V'
read 'M-W'
read 'M-X'
read 'M-Y'
read 'M-Z'
read 'M-['
read 'M-\'
read 'M-]'
read 'M-^'
read 'M-_'
read 'M-`'
read 'M-a'
read 'M-b'
read 'M-c'
read 'M-d'
read 'M-e'
read 'M-f'
read 'M-g'
read 'M-h'
read 'M-i'
read 'M-j'
read 'M-k'
read 'M-l'
read 'M-m'
read 'M-n'
read 'M-o'
read 'M-p'
read 'M-q'
read 'M-r'
read 'M-s'
read 'M-t'
read 'M-u'
read 'M-v'
read 'M-w'
read 'M-x'
read 'M-y'
read 'M-z'
read 'M-{'
read 'M-|'
read 'M-}'
read 'M-~'
read 'M-^?'
$
Looks like $IFS characters and null become the empty string ''. The -e does not seem to change things. EOF is still handled the same.