これは単純なものでなければならないことはわかっていますが、私はそれを見ていません。SpeakerList.txtデータベース内のスピーカーの一連の単一行を含むファイル があります。new.trsデータベースのスペース区切りバージョンを保持します。データベースでスピーカーが見つかったことを確認する必要があるためgrep、スピーカー名で始まる for 行を実行しています。次のコードは常にif、すべてのスピーカーに対してトリガーする最後のステートメントになります。ファイルの存在をチェックする同様のコードがあり、問題なく動作します。私は何が欠けていますか?ループが実行されていることはわかっています — デバッグ行grepで試しました。echoまた、フィールドを印刷してみ$speakerFoundて、「見つかった」とマークされていることを示すステートメントがある場合でも、最後に実際に空白であることを確認しました
for i in `cat SpeakerList.txt`
do
speakerFound=""
echo "Speaker: $i"
grep "^$i" ~/work/new.trs | while read line
do
fileName=`echo $line | cut -d' ' -f 2`
speakerFound="found"
break
done
if [ "$speakerFound" == "" ]; then
echo "$i not found in database."
fi
done