Skip to content

Instantly share code, notes, and snippets.

@LuanComputacao
Created February 13, 2020 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LuanComputacao/a8e01ffdfe3f22789844964a2e90abbc to your computer and use it in GitHub Desktop.
Save LuanComputacao/a8e01ffdfe3f22789844964a2e90abbc to your computer and use it in GitHub Desktop.
Qualidade de Código: usuarios_case.sh
#!/bin/bash
#-------------------------------------------------------------------------------
# usuarios.sh
#-------------------------------------------------------------------------------
#
# Mostra os logins e nomes de usuários do sistema
# Obs: Lê dados do arquivo /etc/passwd
#
# Luan Roger, Março de 2016
#
#-------------------------------------------------------------------------------
# Versão 1: Mostra usuário e nomes separados por TAB
# Versão 2: Remove pontuação desnecessária
# Versão 3: Adicionado suporte a opção -h
# Versão 4: Adicionado suporte a opção -V e opções inválidas
# Versão 5: Adicionado as opções -s e --sort
#-------------------------------------------------------------------------------
MENSAGE_USO="
Uso: $(basename "$0") [ OPÇÃO ]
OPÇÕES:
-h, --help Mostra esta tela de ajuda e sai
-V, --version Mostra a versão do programa e sai
"
MENSAGE_OPCAO_INVALIDA="
Opção inválida: $1
Consulte o menu ajuda:
$(basename "$0") -h
"
ordenar=1 # A Saída deve ser ordenada?
# Tratamento das opções
case "$1" in
-h | --help)
echo "$MENSAGE_USO"
exit 0
;;
-V | --version)
echo -n $(basename "$0")
grep '^# Versão' usuarios_case.sh | tail -1 | cut -d : -f 1 | tr -d \#
exit 0
;;
-s | --sort)
ordenar=1
;;
* )
if test -n "$1"; then
echo "$MENSAGE_OPCAO_INVALIDA"
exit 0
fi
;;
esac
# Processamento
## Extrai a lista
lista=$(cut -d : -f 1,5 /etc/passwd)
## Ordena a lista
if test "$ordenar"='1'; then
lista=$(echo "$lista" | sort)
fi
##Mostra o resultado para o usuário
echo "$lista" | tr -d , | tr : \\t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment