Cancelar execução de shell script [RESOLVIDO]

1. Cancelar execução de shell script [RESOLVIDO]

henrique
henriquew

(usa Ubuntu)

Enviado em 06/10/2015 - 15:32h

Boa tarde pessoal :)
Sou iniciante em Shell, desculpe a inexperiência, dei uma pesquisada mas não encontrei muita coisa por isso pensei em perguntar aqui!
Preciso finalizar/parar a execução do Shell em um teste. Segue:
paginas=0 esse valor é so só exemplo
if [ $paginas -lt 1 ]; then
comandos
comandos
comandos
comandos
FINALIZA/PARA SHELL
fi
comandos
comandos
comandos
comandos
comandos

como poderia ser feito isso? Obrigado e abração



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 06/10/2015 - 16:43h

Depende do caso. Vocẽ pode colocar a continuação do script dentro de um bloco else...fi, como sugerido acima, ou pode simplesmente executar o comando exit dentro do bloco iniciado por then.

Qual é melhor? Como eu disse, depende do caso. Se você pretende invocar seu script por meio do comando source ou “.”, você dificilmente vai querer usar exit. Por outro lado, se você garantir que não vai fazer source ou se, mesmo fazendo, entende que o script deve garantir que vai sair naquele ponto, o exit é muito conveniente.

Construções como essa que eu mostre são comuns para tratamento de erro, especialmente para evitar o que é às vezes chamado de programa diagonal, quando a execução de uma determinada tarefa depende de muitas condições. Compare as duas formas.

# Versão "diagonal"
if (( condição 1 )); then
if (( condição 2 )); then
if (( condição 3 )); then
if (( condição 4 )); then
comando
comando
comando
comando
cod_retorno=0 # Zero indica sucesso para o shell
else
echo "Erro condição 4" >&2
cod_retorno=4
fi
else
echo "Erro condição 3" >&2
cod_retorno=3
fi
else
echo "Erro condição 2" >&2
cod_retorno=2
fi
else
echo "Erro condição 1" >&2
cod_retorno=1
fi
exit $cod_retorno


# Versão direta
if ! (( condição 1 )); then
echo "Erro condição 1" >&2
exit 1
fi
if ! (( condição 2 )); then
echo "Erro condição 2" >&2
exit 2
fi
if ! (( condição 3 )); then
echo "Erro condição 3" >&2
exit 3
fi
if ! (( condição 4 )); then
echo "Erro condição 4" >&2
exit 4
fi
comando
comando
comando
comando
exit 0 # Zero indica sucesso para o shell


3. Re: Cancelar execução de shell script [RESOLVIDO]

Ricardo Lino Olonca
ricardoolonca

(usa Debian)

Enviado em 06/10/2015 - 16:28h

#!/bin/bash
if [ $paginas -lt 1 ]
then
comando1
comando2
comando3
comandon
else
outrocomando1
outrocomando2
outrocomando3
outrocomandon
fi

Mais informações em http://ricardoolonca.blogspot.com.br/2015/09/tomada-de-decisao-em-script-bash.html
http://aurelio.net/shell/canivete







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts