while read newfile <&3; do
if [[ ! $newfile =~ [^[:space:]] ]] ; then #empty line exception
continue
fi
#
while read oldfile <&3; do
if [[ ! $oldfile =~ [^[:space:]] ]] ; then #empty line exception
continue
fi
echo Comparing "$newfile" with "$oldfile"
#
if diff "$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 3</infanass/dev/admin/oldfiles.txt
done 3</infanass/dev/admin/newfiles.txt
私はこれがネストされたループを実行する正しい方法だと思います。しかし、それは正しく動作しません。
ベストアンサー1
このようにファイル記述子3を使用する必要はありません。
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
空行が空白のみを含む行であると仮定すると、空行例外コードは空でない行と一致する可能性があります。これは空白のみを含む行と一致します(\s*
完全に空の行のみが一致するように削除されます)。
if [[ ! $newfile =~ ^\s*$ ]] ; then #empty line exception