Sorteio

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

[ Hits: 12.995 ]

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

Regra básica de firewall em shell

Adiciona usuário e máquinas PDC samba

Instalar temas do Windowmaker

Script para configurar a rede no linux...

Soma valores de uma lista (calculo notas, pontos, etc)


  

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