Su publicación en realidad contiene 2 preguntas.
-  El -eflag indica al script que salga en caso de error. Más banderasSi hay un error, se cerrará de inmediato. 
-  El $?es el estado de salida del último comando. En Linux, un estado de salida de0significa que el comando fue exitoso. Cualquier otro estado significaría que ocurrió un error.
Para aplicar estas respuestas a su script:
egrep "^username" /etc/passwd >/dev/null
 buscaría el username en el /etc/passwd archivo.
-  Si lo encuentra, el estado de salida $?será igual a0.
-  Si no lo encuentra, el estado de salida será otro (no 0). Aquí, querrás ejecutar elecho "doesn't exist"parte del código.
Desafortunadamente hay un error en su secuencia de comandos y ejecutaría ese código si el usuario existe - cambiar la línea a
if [ $? -ne 0 ]
para obtener la lógica correcta.
 Sin embargo si el usuario no existe, egrep devolverá un código de error, y debido al -e opción, el shell saldrá inmediatamente después de esa línea, por lo que nunca llegará a esa parte del código.
 Todos los modificadores de la línea de comandos de bash están documentados en man bash .
      -e      Exit  immediately  if a pipeline (which may consist of a
              single simple command),  a subshell command enclosed  in
              parentheses,  or one of the commands executed as part of
              a command list enclosed by  braces  (see  SHELL  GRAMMAR
              above) exits with a non-zero status.  The shell does not
              exit if the command that fails is part  of  the  command
              list  immediately  following  a  while or until keyword,
              part of the test  following  the  if  or  elif  reserved
              words,  part  of any command executed in a && or || list
              except the command following the final  &&  or  ||,  any
              command  in a pipeline but the last, or if the command's
              return value is being inverted with !.  A trap  on  ERR,
              if set, is executed before the shell exits.  This option
              applies to the shell environment and each subshell envi-
              ronment  separately  (see  COMMAND EXECUTION ENVIRONMENT
              above), and may cause subshells to exit before executing
              all the commands in the subshell.