파일의 행을 구문 분석하려면 KSH에서 일치하는 패턴이 필요합니다.

파일의 행을 구문 분석하려면 KSH에서 일치하는 패턴이 필요합니다.
FILE_CENT="/etc/nsswitch.conf"

if [[ $OS = 'Linux' ]]; then
 if [[ -e $FILE_CENT ]]; then
  logInfo "nsswitch.conf found in $OS, Proceeding further..."
   while read -r LINE
   do
    if [[ `echo $LINE | sed '/^passwd/'` ]]; then
     myarrlin=($LINE)
     logInfo "ARRAY VALUES : ${myarrlin[0]},${myarrlin[1]},${myarrlin[2]}"
      if [[ `echo ${myarrlin[1]} | egrep -s "centrify$|^centrifydc$"` || `echo ${myarrlin[2]} | egrep -s "centrify$|^centrifydc$"` ]]; then
       IS_ADMIN_ENT_ACC=3
       CENT=1
       logInfo "Centrify is enabled with $OS"
      else
       CENT=0
       logInfo "Centrify is disabled with $OS"
      fi
     fi
   done < $FILE_CENT
  else
  logInfo "nsswitch.conf does not exist in $OS, cannot fetch CENTRIFY information!"
 fi
fi

여기서는 패턴 일치를 위해 sed와 egrep을 사용하고 있지만 둘 다 올바른 결과를 제공하지 않습니다.

또한 egrep과 함께 정규식을 사용할 수 있는지 잘 모르겠습니다. KSH에서 패턴 매칭 작업을 하고 있습니다.

입력하다: 여기에 이미지 설명을 입력하세요.

답변1

논리를 단순화하고 "centrify" 문자열이 /etc/nsswitch.conf의 "passwd:" 줄에 있는지 물어보세요. 전체 while루프를 다음으로 바꾸십시오.

if grep -q '^passwd:.*centrify' /etc/nsswitch.conf
then
  IS_ADMIN_ENT_ACC=3
  CENT=1
  logInfo "Centrify is enabled with $OS"
else
  CENT=0
  logInfo "Centrify is disabled with $OS"
fi

관련 정보