다음 코드에서 fgrep 테스트의 반환 값이 항상 false인 이유는 무엇입니까?

다음 코드에서 fgrep 테스트의 반환 값이 항상 false인 이유는 무엇입니까?

fileA와 fileB에서 누락된 항목을 찾아 fileC에 쓰는 다음 스크립트가 있습니다.

script.sh fileA fileB fileC

스크립트.sh:

rm $3
while IFS="" read -r inputline; do

fgrep -q \""$inputline"\" $1  
if [ 1 -eq $? ]; then
    echo \""$inputline"\" >>$3
fi
done <$2

fileB의 모든 내용이 fileC에 덤프되는 것을 확인했는데 기본적인 내용이 누락되었습니다. (aix 6, 배쉬)

ps: 파일에는 비교하는 데 중요한 후행 공백이 있습니다.

답변1

노력하다

#!/usr/bin/bash
rm "$3"
while IFS="" read -r inputline
do
    grep -Fq "$inputline" "$1" && echo "$inputline" >> "$3"
done < "$2"

관련 정보