Eu tenho um script que encontrei e estou tentando executá-lo, ele apenas baixa e instala as bibliotecas de tempo de execução Apache. A primeira linha é set -e
e está causando um erro; o que set -e
faz?
Esse recurso é tão complicado que merece sua própria seção.
set permite alterar os valores das opções do shell e definir os parâmetros posicionais ou exibir os nomes e valores das variáveis do shell.
A -e
opção
-e
Saia imediatamente se um pipeline (consulte Pipelines), que pode consistir em um único comando simples (consulte Comandos Simples), um comando de subshell entre parênteses (consulte Agrupamento de Comandos) ou um dos comandos executados como parte de uma lista de comandos incluída por chaves (consulte Agrupamento de comandos) retorna um status diferente de zero. O shell não sai se o comando que falha faz parte da lista de comandos imediatamente após uma palavra-chave while ou while, parte do teste em uma instrução if, parte de qualquer comando executado em um && ou || list exceto o comando após o final && ou ||, qualquer comando em um pipeline, exceto o último, ou se o status de retorno do comando estiver sendo invertido com! Uma interceptação no ERR, se definida, é executada antes da saída do shell.
Essa opção se aplica ao ambiente do shell e a cada ambiente de subshell separadamente (consulte Ambiente de execução de comando) e pode causar a saída de subshells antes de executar todos os comandos no subshell.
Fonte: www.gnu.org
Editado devido ao comentário de @ psusi abaixo.
Além disso, você pode ler a página de manual do bash
man bash
na seção: SHELL BUILTIN COMMANDS
ou emitir
help set
para uma breve mensagem de ajuda.
help set
e o manual completo do bash éinfo bash
, se você tiver o bash-doc instalado.help set
e / ouman bash
são os corretos paraset
.set -e
em resumo, quando está na parte superior do script bash, diz ao script para sair assim que qualquer linha do script falhar (com algumas exceções listadas no manual). [1]Como opção de depuração, costuma ser usada com
set -x
, que é imprimir cada linha de comando expandida antes da execução com um sinal "+". [2]Veja mais em:
[1] https://www.peterbe.com/plog/set-ex
[2] http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
fonte