Bash Shebang para manequins?

32

Eu tenho alguns scripts bash que eu configurei e que usam principalmente

#!/bin/bash

mas eu me deparo regularmente com alguns que parecem

#!/bin/bash -e
#!/bin/bash -x
#!/bin/bash -ex

e assim por diante.

Alguém pode explicar o significado e os benefícios dessas opções de shebang e se elas se aplicam a outras shebangs?

    
por coneybeare 04.10.2010 / 23:09

2 respostas

36

Se um script /path/to/foo começar com #!/bin/bash , a execução de /path/to/foo arg1 arg2 será equivalente a executar /bin/bash /path/too/foo arg1 arg2 . Se a linha shebang for #!/bin/bash -ex , é equivalente a executar /bin/bash -ex /path/too/foo arg1 arg2 . Esse recurso é gerenciado pelo kernel.

Note que você pode portar apenas um argumento na linha shebang: alguns unices (como o Linux) aceitam apenas um argumento, então #!/bin/bash -e -x levaria a receber o único argumento de cinco caracteres -e -x (a erro de sintaxe) em vez de dois argumentos -e e -x .

Para o shell Bourne sh e shells derivados, como POSIX sh, bash, ksh e zsh:

  • -e significa que, se algum comando falhar (o que indica ao retornar um status diferente de zero), o script será encerrado imediatamente.
  • -x faz com que o shell imprima um rastreio de execução.

Outros programas podem entender essas opções, mas com diferentes significados.

    
por 04.10.2010 / 23:27
20

São opções passadas para bash see help set para mais informações, neste caso:

-x  Print commands and their arguments as they are executed.
-e  Exit immediately if a command exits with a non-zero status.
    
por 04.10.2010 / 23:18