read first 8 characters of text file with bash

I would like to read only the first 8 characters of a text file and save it to a variable in bash. Is there a way to do this using just bash?


You can ask head to read a number of bytes. For your particular case:

$ head -c 8 <file>

Or in a variable:

foo=$(head -c 8 <file>)

in bash

help read

you'll see that you can :

read -r -n 8 variable < .the/file

If you want to read the first 8, independent of the separators,

IFS= read -r -n 8 variable < .the/file

But avoid using

.... | while IFS= read -r -n 8 variable

as, in bash, the parts after a "|" are run in a subshell: "variable" would only be changed in that subshell, and it's new value lost when returing to the present shell.