Matthew_S wrote: > With the 'while read line', it appears that I don't need to keep track of > the line numbers. In fact this below does exactly what I need it to do;
Good. > cat $File | # Supply input from a file Search the web for "useless use of cat". Your use of it here is useless. But it is more than simply useless here as it causes the while loop to be run inside of a subshell. This has subtle effects that often trip people up. (e.g. Variables set inside the loop don't apply outside the subshell. See Bash FAQ E4 for more information.) > while read line # As you suggested... > > do echo $line > echo >> $RESULTS > echo $line >> $RESULTS > $line > [ $? == 0 ] && echo "PASSED" >> $RESULTS || echo "FAILED" >> $RESULTS Double check the test operator syntax. (e.g. 'help test' or 'man test') Use of "==" is a bash extension. Okay in a #!/bin/bash script but in #!/bin/sh script that should be a single "=" for portability. I suggest wrapping the entire group within curly braces and then redirecting the entire list. (e.g. { ... ;} >> $RESULTS) while read line; do echo $line { echo echo $line $line && echo "PASSED" || echo "FAILED" } >> $RESULTS done < $File > exit I always like to see an explicit 'exit 0' or 'exit 1' as appropriate. Use of plain 'exit' passes the exit status of the last command that was executed in accumulator machine style. That seems counter to the explicit use of an exit there. Plus many commands such as 'grep' overload the return code with status information that is not appropriate for an exit code elsewhere in the script. Better to be explicit here. Bob