ループを使用して 2 つのファイルを比較し、両方のファイルに含まれていない文字列を確認します。

ループを使用して 2 つのファイルを比較し、両方のファイルに含まれていない文字列を確認します。
i=$(cat /etc/icinga/devices.d/xlcdw/full)

if IP in grep -q $i /etc/icinga/devices.d/xlcdw/xlcdw-endpoints.cfg;
    echo "Already configured"
  else
    echo $IP
fi

.cfg ファイルで既に構成したホストが 'full' という名前のファイルに存在するかどうかを確認しようとしています。もちろん、上記のコードは実行されません。IP アドレスを grep で検索しています。

答え1

コメントからあなたの情報を抜粋します:

ファイル「full」には、1 行につき 1 つの IP アドレスが含まれます。.cfg ファイルには、IP アドレスに加えて、あらゆる種類のアルファベット テキストが含まれます。

そして

'full' ファイルを反復処理して、その中の IP (1 行に 1 つ) が .cfg ファイルにも含まれているかどうかを確認する必要があります。

つまり、反復処理を実行したいのですが、スクリプトでは反復処理は実行されません。

for ループを試してください:

for IP in $(cat /etc/icinga/devices.d/xlcdw/full); do
  if [[ `grep -c $IP /etc/icinga/devices.d/xlcdw/xlcdw-endpoints.cfg` > 0 ]]; then
    echo $IP already configured
  else
    echo $IP missing
  fi
done

それをあなたのニーズに合わせて調整してください(私は完全に理解していません)

関連情報