Escondendo / Personalizando mensagens de erro no prompt

Publicado por Daniel Cassemiro Freire em 31/08/2004

[ Hits: 7.323 ]

 


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

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Como obter informações sobre o sistema com inxi

Ordenando strings em shell script

Compactando diretórios e transferindo via pipe por SSH

Deixe seu Xubuntu com a cara do macOS

Montando partição Windows automaticamente

  

Comentários
[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