if ステートメントは while ループ内では機能しません。

if ステートメントは while ループ内では機能しません。

ここでは、文字列比較が機能しない理由を理解できません。

while IFS=, read -r ELMS_SIZE ELMS_NAME ELMS_ENV ELMS_DB
do

if [ "${ELMS_DB}" = "NOMATCH" ]; then
 echo "done"
fi

done < <(tac ${CSM_DATA_DIR}/test.csv)

exit

ELMS_DB文字列値はNOMATCHtest.csv の出力例です。

12 am_pltconfig9 unknown NOMATCH
12 am_pltconfig8 unknown NOMATCH
12 am_pltconfig7 unknown NOMATCH
12 am_pltconfig6 unknown NOMATCH

ベストアンサー1

あなたの例によると、test.csvファイルは実際にはカンマで区切られず、スペースで区切られます。 while readループを次のように変更してみてください。

while read -r ELMS_SIZE ELMS_NAME ELMS_ENV ELMS_DB
do
  if [ "$ELMS_DB" = "NOMATCH" ]; then
   echo "done"
  fi
done < <(tac "${CSM_DATA_DIR}/test.csv")

exit

おすすめ記事