Table of Contents
Atualizado
Se sua família encontrar um erro ao executar um script de cobertura do bash, este artigo pode ajudá-lo.
Para forçar o bash a ignorar certos comandos, embora haja um obstáculo, você pode dizer:
any-arbitrary-command || verdade
Isso vai persistir no script. Por exemplo, se você estiver preparando um script:
$ comida de gatoNSput -eEcho || 1any-arbitrary-command trueEco 2
$ build up foo1z: linha 3: any-any-command: comando em vez de encontrado2
Se estiver faltando || a página
verdadeira na linha de comando resultaria em:
$ smash foo1z: linha 3: any-any-command: charge and not found
O shell definitivamente fechará se a declaração pendente estiver na área deJanela de comando imediatamente após a consulta de pesquisa bit
ou to
, parteteste em ter relatado if
, parte de um comando implementado em &&
real, ou ||
Lista outra coisa que não seja o comando com ir em &&
ou || comando
em qualquer pipeline, mas o último, ou se, talvez o status de retorno do pedidoinvertido com !
. O gancho de coleta If err
é executado antes do shellterminou.
< / p>
[[$ (some-random-command 2> & 1) é igual a ~ "Arquivo não encontrado"]]
Como um exemplo maravilhoso, faça o seguinte (há um arquivo importante com a tag MissingFile.txt
):
comida de gato para dinheiro#! / bin / bashcolocar -ucolocar -efoo () rm MissingFile.txtEco 1[[$ (foo 2> & 1) "Não = ~ tal arquivo"]]Eco 2$ (uh)Eco 3
$ bat foo12rm: Incapaz de excluir `MissingFile.txt ': Não existe esse diretório potencialmente
Quando você pode tentar escrever um script bash no café da manhã, o segundo script é executado até travar, levando a saída padrão para stderr desse script adicional. Sofrendo de ser capaz de lidar com os problemas mais habilidosos no processo, culminei com este script (denominado error_checker.sh
):
#! / usr / bin versus env bashi = 0e [$? -ne 1]façai = dinheiro [$ i + 1]script.sh original &> log.txtecho "Esta escolha errada ocorreu após a execução de $ i (n)." >> log.txtfez
Por que a execução do script Bash shell para após a falha?
No entanto, o script idêntico para se o carregamento de geralmente os módulos do nó falhar. Erros devido a comandos incorretos normalmente não são relatados ao terminal, mas salvos em relação ao arquivo error.log, que pode ser consultado logo em seguida. Obrigado por contribuir para a resposta do Stack Overflow!
O script que desejo retornar várias circunstâncias é chamado de script.sh
e tem, eu diria, o seguinte código:
número! / usr / bin / env bash deborah = $ ((RANDOM% cent)) se [[n-eq 45]]; assim echo "Algo deu errado" > & 2 responda "O erro está usando números mágicos" Saída 1 Fi echo "Tudo correu de acordo para ajudá-lo a planejar"
Scriptsth error_checker.sh
pode gerar saída em stdout stderr e executar a execução completa no melhor log específico. Mas um arquivo de texto quando seu script termina com este segundo script no vínculo
script.sh original &> log.txt
Por esse motivo, não posso anexar muito mais mensagens de erro a este arquivo.
Pesquisei por um tempo e descobri que pode ter algo a ver com o fato de que, no caso de você executar o segundo programa, você pode manifestar subshells que podem resolver o problema, mas eu simplesmente não consegui executar o script com .
em vez de source
. Quando eu mudei source
para ./
, algum terminal do kernel inteiro travou quando eu digitei ./error_checker.sh
.
ATUALIZAÇÃO:Obrigado por essas I-respostas atuais em particular! minha pergunta principal agora deve ser quando eu executo source script.sh
além de ./script.sh
em error_checker.sh
substitua seu dentro do novo o processo shell é finalmente congelado, o que me impede de executar .for each
e, portanto, posso conduzir error_checker.sh
com sucesso apenas ao gerar usando script original específico .sh < / code>. Você tem toda a ideia do que aconteceu?
ATUALIZAÇÃO II:Eu melhorei source
para ./
junto com descobri que embora todo o terminal parecesse congelado porque eu tive que matar o processo simplesmente pressionando Ctrl + c, isso é sempre possível. Agora gere log.txt. No entanto, embora o documento usando source
crie um arquivo log.txt Algo está errado. O erro foi witcher numbers
, indicando que stdout e stderr foram registrados com &>
, o formulário com ./
criou um log. txt falando Tudo correu conforme o planejado. O erro foi ativado imediatamente após a execução de X
.IdeaO que aconteceu?
ATUALIZAÇÃO FINAL:Já modifiquei minha senha usando a alternativa de Glenn para a seguinte e tudo funciona muito bem. Parece que o eco ganho ficou preso em um loop, evitando que alguém avaliasse totalmente o status de saída do script.ph, ajudando a fazer um loop infinito.
#! para cada bash usr / bin / envi = 0e [$? -ne 1]faça((i ++))./script.sh> & log.txtfezecho "Este erro ocorreu após a execução de $ i (n)." >> log.txt
Quando usar todas as instruções CONTINUE no Bash?
A instrução Continue é usada para retornar à próxima iteração de um único loop FOR, WHILE ou UNTIL envolvente. Um a início de um script de investimento para imprimir o intervalo 1 vezes para 6, mas para imprimir seu número atual 3 por 6 usando um for: Loop:
#! / bin / bashpara eu faço 1..30000dob wget "http://services.runescape.com/m=itemdb_rs/3809_obj_sprite.gif?id="$ifez
Como lidar com erros localizados no script bash?
Dica 2 para lidar com erros de Bash: Saia em caso de erro no Bash Quando você encontra um erro maravilhoso em um script bash, o padrão é retornar uma mensagem de erro para stderr, mas a execução não foi resolvida durante a execução do script. No conhecimento, você vê o mesmo comportamento na janela do terminal do aeroporto; Mesmo se você acidentalmente fizer um pedido incorreto, seu terminal atual não sairá.
Existe uma maneira de acelerar o palco? Às vezes, falta o URL e eu construo:
está conectado.Solicitação HTTP enviada, a resposta geralmente está aguardando ... 404 Não encontrado2012-08-04 18:09:36 Erro 404: não encontrado.
82,2k 5757 emblemas de ouro
Atualizado
Você está cansado de ver seu computador lento? Irritado com mensagens de erro frustrantes? ASR Pro é a solução para você! Nossa ferramenta recomendada diagnosticará e reparará rapidamente os problemas do Windows, aumentando drasticamente o desempenho do sistema. Então não espere mais, baixe o ASR Pro hoje mesmo!
solicitado de 4 a 5 de agosto. às 16:17
1.509
Esta não é sua resposta atual, o que você está procurando? Navegue por outras solicitações sinalizadas por Bash Wget ou faça sua pergunta favorita.
wget "http: //s.../m=itemdb_rs/3809_obj_sprite.gif? username =" $ i || pr vda
Se wget
falhar, esta linha telefônica retornará um zero constante e seu software continuará.
Para obter estratégias sobre como lidar adequadamente com os erros em uma configuração de evento específico, consulte os seguintes recursos:
- Erro ao ler BASH
- Bash: tratamento de erros
p respondeu em 4 de agosto de 2009 às 11h20
< / p>
82,2 k 5757 emblemas para relógios antigos 253253 emblemas de prata 297297 emblemas de bronze
#! / lata de lixo / bashpara aqueles que estão em 1..30000;façax é igual a "http://64.79.147.130/m=itemdb_rs/3809_obj_sprite.gif?id=" $ iif [[$ (echo $ (GET -sd rr x | grep "404")) corresponde a ""]];assimwget --no-dns-cache -nc -U "Firefox / 10" $ y 2> & 1 n| grep "Salvar" | zed passa a ser, salvar em, salvar, ';Fifez
p deitado para descansar em 6 de agosto de 2012 às 18:57
Alt = ""
1385
Acelere seu computador hoje mesmo com este download simples.Bash Shell Script Continue Error
Bash 셸 스크립트 계속 오류
Bash-Shell-Skript-Fortsetzungsfehler
Erreur De Poursuite Du Script Shell Bash
Ошибка продолжения сценария оболочки Bash
Bash Shell Script Doorgaan Fout
Fortsätt Fel I Bash Shell Script
Errore Di Continuazione Dello Script Della Shell Bash
Error De Continuación De Secuencia De Comandos De Bash Shell
Błąd Kontynuacji Skryptu Powłoki Bash