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.662 Categoria: Shell Script Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

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

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

Nenhuma dica encontrada.

Instale o WPS-Office já com a tradução para português no Debian/Ubuntu

Exibindo mensagens ao efetuar login

Desencurtar links via terminal

LibreOffice - Acessando arquivos recentes pelo Unity Launcher

Script para organizar janelas em cascata no KDE Plasma 6 (Wayland)

#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.