Precisa corresponder ao padrão no KSH enquanto analisa as linhas do arquivo

0
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

Aqui, estou usando sed e também egrep para correspondência de padrões, mas nenhum deles está me dando resultados corretos.

Além disso, não tenho certeza se posso usar o regex com o egrep? Lutando com correspondência de padrões no KSH.

Entrada:  

    
por Dipit Sethi 08.08.2018 / 14:24

1 resposta

1

Considere simplificar sua lógica para simplesmente perguntar se a string "centrify" está na linha "passwd:" do /etc/nsswitch.conf. Substitua todo o loop while por:

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
    
por 08.08.2018 / 14:49

Tags