(For simplicity I'll assume the file to read is the first argument - $1.)I can do what I want externally with:tempfile=$(mktemp)awk '/^#/ {next}; NF == 0 {next}; {print}' $1 > $tempfilewhile read var1 var2 var3 var4 < $tempfile; do  # stuff with var1, etc.doneHowever, it seems absurd to need to call awk every time I parse the config file.  Is there a way to make read ignore commented or whitespace-only lines in a file, without external binaries/potential performance issues?Answers so far are quite helpful!  To clarify, I don't want to use a temp file, but I do want to read the config from a file, not from standard in.  I'm well aware that I can use an input redirection when I call the script, but for various reasons that won't work in my circumstance.I want to softcode the input to read from, e.g.:configfile=/opt/myconfigfile.txt[ $# -gt 0 ] && [ -r $1 ] && configfile=$1while read var1 var2 var3 var4 < $configfile ; do  ...But when I try this, it just reads the first line of configfile over and over until I kill the process.Maybe this should be its own question...but it's probably a single line change from what I'm doing.  Where's my error?
How to make bash built-in read ignore commented or empty lines?
bash;shell script;read
You don't need a tempfile to do this, and sed (or awk) are far more flexible in comment processing than a shell case statement.For example:configfile='/opt/myconfigfile.txt'[ $# -gt 0 ] && [ -r $1 ] && configfile=$1sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' $configfile |    while read var1 var2 var3 var4; do      # stuff with var1, etc.    doneThis strips comments (with or without leading whitespace) and deletes empty lines from the input before piping it into the while loop.  It handles comments on lines by themselves and comments appended to the end of the line:# full-line comment# var1 var2 var3 var4abc 123 xyz def # comment hereCalling sed or awk for tasks like this isn't absurd, it's perfectly normal.  That's what these tools are for.  As for performance, I'd bet that in anything but very tiny input files, the sed version would be much faster.  Piping to sed has some startup overhead but runs very fast, while shell is slow.