GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué hace la -e en un bash shebang?

Su publicación en realidad contiene 2 preguntas.

  1. El -e flag indica al script que salga en caso de error. Más banderas

    Si hay un error, se cerrará de inmediato.

  2. El $? es el estado de salida del último comando. En Linux, un estado de salida de 0 significa 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 a 0 .

  • Si no lo encuentra, el estado de salida será otro (no 0 ). Aquí, querrás ejecutar el echo "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.

Linux
  1. ¿Qué hace la línea '!/bin/sh -e'?

  2. ¿Qué significa &al final de un comando de Linux?

  3. ¿Qué significa set -e en un script bash?

  4. ¿Cuál es el uso de $# en Bash?

  5. ¿Qué significa la sintaxis |&en lenguaje shell?

Cómo usar el comando de lectura Bash

Comando de salida de Bash y códigos de salida

La diferencia entre los operadores Bash [[ Vs [ Vs ( Vs ((?)

¿Cómo funciona el comando Exit en una terminal Unix?

¿Qué es el comando matar en Linux?

¿Qué hace echo $? ¿hacer?