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