Sorteio

Publicado por Raimundo Alves Portela (última atualização em 09/11/2012)

[ Hits: 13.244 ]

Homepage: http://portelanet.com

Download sorteia

Download 1352159995.sorteia (versão 3)

Download sorteio.sh (versão 2)




Este script serve para fazer um sorteio baseado num arquivo texto dos inscritos. Ele exclui o nome do sorteado da lista de inscritos, não permitindo termos ganhadores repetidos.

Autor: Raimundo Alves Portela Filho
rai3mb@gmail.com
Desenvolvido em : 09/04/2011

  



Versões atualizadas deste script

Versão 3 - Enviado por Raimundo Alves Portela em 05/11/2012

Changelog: - Melhora nas rotinas já implementadas
- Adicionado a opção de ver todos os sorteados
- Adicionado a opção de reiniciar tudo

Download 1352159995.sorteia


Versão 2 - Enviado por Aécio dos Santos Pires em 30/10/2012

Changelog: #-------------------------------------------------------
# file: sorteio.sh
# comment: Este script serve para fazer um sorteio baseado num arquivo texto dos inscritos.
# Ele exclui o nome do sorteado da lista de inscritos, não permitindo termos ganhadores repetidos.
# author: Raimundo Alves Portela Filho
# date: 09-abr-2011
# revision: Aecio Pires
# Last updated: 29-out-2012, 15:30
#-------------------------------------------------------

Melhorias realizadas nesta versão:

* Melhoria no loop de execução;
* Melhoria no menu de opções;
* Melhoria na documentação e legibilidade do código;
* Melhoria na exibição das informações;
* Criação das opções de visualização da lista de inscritos e ganhadores;
* Criação das opções de ajuda e versionamento do script;
* Checagem dos requisitos ao funcionamento do script;
* Log da execução do sorteio.

Download sorteio.sh


Esconder código-fonte

#!/bin/bash
# Este script serve para fazer um sorteio baseado num arquivo texto dos inscritos
# Ele exclui o nome do sorteado da lista de inscritos, não permitindo termos ganhadores repetidos
# Autor: Raimundo Alves Portela Filho
# rai3mb@gmail.com
# Desenvolvido em : 09/04/2011
# -------------------------------------------------------------------
while :
do
   clear
   echo "
==========================================================================
SCRIPT - PARA SORTEIO DE GANHADOR BASEADO NA LINHA DO ARQUIVO INCRITOS.TXT
--------------------------------------------------------------------------

[ 1 ] - FAZER SORTEIO
[ 2 ] - VER ULTIMO SORTEADO
   
[ 99 ] - SAIR

==========================================================================
                   
DIGITE SUA OPÇÃO:"

   read OP
   test "$OP" = "1" || test "$OP" = "2" || test "$OP" = "99"
   if [ "$?" -eq 1 ]; then
      echo "ESTA OPÇÃO NÃO EXISTE"
      sleep 2
   else
      break
   fi
done

case "$OP" in
   1) 
      ARQUIVO="inscritos.txt"
      test -f "$ARQUIVO"
      if [ "$?" -eq 1 ]; then
         echo "Não foi encontrado o arquivos 'inscritos.txt', que contém a lista dos inscritos"
         exit
      fi

      QTD_LINHAS=$(cat "$ARQUIVO" | wc -l)
      if [ "$QTD_LINHAS" -eq 0 ]; then
         echo "Não há registros no arquivo"
         exit
      fi

      LINHA=$[RANDOM%$QTD_LINHAS+1]

      GANHADOR=$(cat "$ARQUIVO" | head -n $LINHA | tail -n 1)
      
      sed -i /"$GANHADOR"/d "$ARQUIVO"

      echo "GANHADOR : $GANHADOR"
      echo "$GANHADOR" >> ganhadores.txt
      echo
      echo
      echo "PRESSIONE UMA TECLA PARA CONTINUAR!"
      read CONFIRM
      ./sorteia

   ;;
   
   2)
      echo "O ÚLTIMO GANHADOR FOI:" 
      ULT_LINHA=$(cat ganhadores.txt | wc -l)
      cat ganhadores.txt | head -n $ULT_LINHA | tail -n 1
      echo
      echo
      echo "PRESSIONE UMA TECLA PARA CONTINUAR!"
      read CONFIRM
      ./sorteia

   ;;

   99)
      echo "Saindo..."
      sleep 1
      clear
      exit
esac

Scripts recomendados

Backup de Diretórios

Menu de saída para i3

Gerando logs para arquivos sem sobrescrever

Script para manutenção de um servidor asterisk

Convertendo decimal para hexadecimal


  

Comentários
[1] Comentário enviado por aeciopires em 22/09/2011 - 22:05h

Oi Raimundo!

Gostei do script. Fiz uma pequena melhoria e segue o código atualizado.

#!/bin/bash
# Este script serve para fazer um sorteio baseado num arquivo texto dos inscritos
# Ele exclui o nome do sorteado da lista de inscritos, não permitindo termos ganhadores repetidos
# Autor: Raimundo Alves Portela Filho
# rai3mb@gmail.com
# Desenvolvido em : 09/04/2011
# Ultima modificacao: Aécio Pires <aeciopires@gmail.com> em 22/09/2011 Às 21:57
# -------------------------------------------------------------------
ARQ_INSCRITOS=inscritos.txt
ARQ_GANHADORES=ganhadores.txt
while :
do
clear
echo "
==========================================================================
SCRIPT - PARA SORTEIO DE GANHADOR BASEADO NA LINHA DO ARQUIVO INCRITOS.TXT
--------------------------------------------------------------------------

[ 1 ] - FAZER SORTEIO
[ 2 ] - VER ULTIMO SORTEADO

[ 99 ] - SAIR

==========================================================================

DIGITE SUA OPÇÃO:"

read OP
test "$OP" = "1" || test "$OP" = "2" || test "$OP" = "99"
if [ "$?" -eq 1 ]; then
echo "ESTA OPÇÃO NÃO EXISTE"
sleep 2
else
break
fi
done

case "$OP" in
1)
test -f "$ARQ_INSCRITOS"
if [ "$?" -eq 1 ]; then
echo "Não foi encontrado o arquivos '$ARQ_INSCRITOS', que contém a lista dos inscritos"
exit
fi

QTD_LINHAS=$(cat "$ARQ_INSCRITOS" | wc -l)
if [ "$QTD_LINHAS" -eq 0 ]; then
echo "Não há registros no arquivo"
exit
fi

LINHA=$[RANDOM%$QTD_LINHAS+1]

GANHADOR=$(cat "$ARQ_INSCRITOS" | head -n $LINHA | tail -n 1)

sed -i /"$GANHADOR"/d "$ARQ_INSCRITOS"

echo "GANHADOR : $GANHADOR"
echo "$GANHADOR" >> $ARQ_GANHADORES
echo
echo
echo "PRESSIONE UMA TECLA PARA CONTINUAR!"
read CONFIRM
# Nome do script
./sorteio.sh

;;

2)
test -f "$ARQ_GANHADORES"
if [ "$?" -eq 1 ]; then
echo "Não foi encontrado o arquivo '$ARQ_GANHADORES', que contém a lista dos ganhadores."
exit
fi
echo "O ÚLTIMO GANHADOR FOI:"
ULT_LINHA=$(cat $ARQ_GANHADORES | wc -l)
cat $ARQ_GANHADORES| head -n $ULT_LINHA | tail -n 1
echo
echo
echo "PRESSIONE UMA TECLA PARA CONTINUAR!"
read CONFIRM
# Nome do script
./sorteio.sh

;;

99)
echo "Saindo..."
sleep 1
clear
exit
esac

[2] Comentário enviado por aeciopires em 05/11/2012 - 18:21h

Oi, Raimundo!

Submeti mais uma versão do script com melhorias. Espero que seja útil às demais pessoas.

Abraço.

[3] Comentário enviado por rai3mb em 05/11/2012 - 21:53h

Legal, tinha feito uma nova versão com mais opções que apresento em cursos, vou postar aqui ;-), tinha esquecido.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts