예상치 못한 토큰 fi'에 가까운 구문 오류로 인해 오류가 발생했습니다.

예상치 못한 토큰 fi'에 가까운 구문 오류로 인해 오류가 발생했습니다.
#/bin/sh
file="C:/khushal/prop.txt"
if [ -f "$file" ]
then
    echo "$file found."
 while IFS= read -r key value
  do
    key=$(echo $key | tr '.' '_')
    eval ${key}=\${value}
     echo "User Id       = " ${db_uat_user}
      echo "user password = " ${db_uat_passwd}
 else
     echo "$file not found."
fi 

답변1

done문과 일치하는 토큰이 없습니다 while ... do.

일반적으로 파일 테스트를 반대로 하여 스크립트를 단락시키는 것이 가장 좋습니다. 이렇게 하면 if .. then .. else 가 너무 많은 줄에 걸쳐 있지 않게 됩니다. 즉:

#/bin/sh
file="C:/khushal/prop.txt"
if ! [ -f "$file" ]
then
    echo "$file not found."
    exit 1
fi
echo "$file found."
while IFS= read -r key value
do
   key=$(echo $key | tr '.' '_')
   eval ${key}=\${value}
   echo "User Id       = " ${db_uat_user}
   echo "user password = " ${db_uat_passwd}
done

관련 정보