Pular para o conteúdo

Escondendo / Personalizando mensagens de erro no prompt

Dica publicada em Shell Script / Miscelânea
Daniel Cassemiro Freire alphainfo
Hits: 8.658 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Escondendo / Personalizando mensagens de erro no prompt

Muitas vezes temos a necessidade de desenvolver um script para usuários que não têm muita intimidade com os comandos do Linux (nem com as suas saídas).

Então imagine se desenvolvermos um script como esse para listar diretórios:

#!/bin/sh
# Modo de uso: lista [nome do dir]

ls $1
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Onde o usuário irá entrar com o nome do programa e o nome do dir a ser listado como parâmetro desse programa.

Imagina se ele pedir para listar um diretório que não existe. Iria jogar uma mensagem de erro. No caso do ls, é uma mensagem óbvia, mas existem comandos que, para quem não tem intimidade com o Linux e seus comandos, deixaria o usuário perdido. Poderíamos fazer da seguinte forma:

#!/bin/sh
# Modo de uso: lista [nome do dir]

ls $1 2> /dev/null

if [ "$?" != 0 ]
echo "Erro ao listar o diretório $1"
fi

O segredo é:
  • Ao executar o comando, redirecionar suas mensagens de erro para o nada (exemplo: ls $1 2>/dev/null).

  • Checar se a variável que guarda o retorno que o programa executado deu para o sistema operacional foi diferente de zero (exemplo: if [ "$?" != 0 ] ).

Abraços,
Daniel Freire

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

su/sudo em modo visual

Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)

Compactando diretórios e transferindo via pipe por SSH

Recuperando posição do cursor na última linha editada no VIM

Comando seq com saída em hexadecimal

#1 Comentário enviado por vodooo em 01/09/2004 - 00:17h
Dica ótima para usuários iniciantes!!

Abraços
#2 Comentário enviado por maykon19 em 25/08/2006 - 11:33h
Muito bom. Mas o que quer dizer essa parte "2>" e "$?".
#3 Comentário enviado por maykon19 em 25/08/2006 - 11:51h
Meu caro colega . Seu script e sua idéia são muito boa. Mas tem um porém
ele não irá funcionar do jeito que colocou ai.

Acabei de testar e faltou algumas coisinhas, olha só.

#!/bin/sh

ls -$1 2> /dev/null

if [ "$?"!=0 ]; then #faltou o ; eo then depois da condição
echo "Erro ao listar o diretório $i";
fi

Mas como eu disse sua idéia é muito boa. Valeu...
#4 Comentário enviado por terra.jr em 11/09/2009 - 14:22h
Quando falta apenas uma chave, colchete, ponto, é normal. A gente digita tanto codigo o dia todo que uma chave a mais uma a menos.

kkk

Dá pra usar o IF sem ter os [] (colchetes tambem).

Contribuir com comentário

Entre na sua conta para comentar.