Você não precisa usar o descritor de arquivo 3 assim.
while read newfile do
if [[ ! $newfile =~ [^[:space:]] ]] ; then #empty line exception
continue
fi
while read oldfile ; do
if [[ ! $oldfile =~ [^[:space:]] ]] ; then #empty line exception
continue
fi
echo Comparing "$newfile" with "$oldfile"
# diff -q doesn't bother generating a diff.
# It just tells you whether or not the files match.
if diff -q "$newfile" "$oldfile" >/dev/null ; then
echo The files compared are the same. No changes were made.
else
echo The files compared are different.
fi
done < /infanass/dev/admin/oldfiles.txt
done < /infanass/dev/admin/newfiles.txt
Supondo que uma linha vazia é uma linha com apenas espaço em branco, o código de exceção da linha vazia pode corresponder a linhas não vazias. Isso irá combinar as linhas com apenas espaços em branco nelas (remova \s*
para fazer com que corresponda apenas às linhas vazias):
if [[ ! $newfile =~ ^\s*$ ]] ; then #empty line exception