você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Seleção aleatória de texto para exibição em páginas Web

Por Rubens Queiroz de Almeida

Data de Publicação: 14 de Novembro de 2006

Em dois dos meus sites, Aprendendo Inglês e Contando Histórias, eu uso um script cgi que seleciona, dentre o acervo publicado no site, uma mensagem aleatória.

Para ver como funciona, visite o site Aprendendo Inglês ou o site Contando Histórias.

O mecanismo é o mesmo usado no script para gerar os números da loteria, com apenas algumas pequenas modificações.

  #!/bin/bash
  
  homedir=/var/www/
  
  cd $homedir/html
  
  # Neste ponto eu defino os limites inferior e superior
  # para a seleção das mensagens. O limite inferior é
  # 1 e o superior é igual ao número de arquivos existentes
  # no diretório. Eu obtenho este número através da combinação
  # dos comandos ls e wc.
  
  LOWER=1
  LENGTH=`ls *.inc | wc -l`
  
  # Aqui entra o perl novamente, para selecionar um número
  # aleatoriamente, entre os limites fornecidos
  
  Random=`perl -e "print int(rand($LENGTH+1))+$LOWER;"`
  
  # Atribuimos à variável Display o nome do arquivo
  # selecionado aleatoriamente. O comando ls lista
  # todos os arquivos do diretório e o sed seleciona, 
  # da lista completa, apenas  o nome do arquivo.
  # A variável Random contém o número aleatório gerado
  # e o sed imprime apenas a linha correspondente a este
  # número, que é o nome do arquivo que o script cgi
  # exibirá na tela
  
  Display=`ls | sed -n -e ${Random}p`
  
  # A seguir vem a montagem da página html. Como padrão,
  # temos as duas linhas com os comandos "echo" e em seguida
  # o conteúdo da página gerada. Os comandos "cat" logo a seguir
  # ecoam para a tela o conteúdo de três arquivos:
  # 1. head.inc: cabeçalho da página html
  # 2. $Display: o arquivo selecionado aleatoriamente
  # 3. rodape.inc: rodapé da página html
  
  echo "Content-type:text/html";
  echo
  
  cat $homedir/inc/head.inc
  
  cat $Display
  
  cat $homedir/inc/rodape.inc
  
  echo "</body></html>"

Este foi um exemplo muito simples, para finalidades didáticas. Este script pode ficar muito sofisticado, criando páginas html com css e qualquer outro recurso que estiver à mão.

Sabe fazer diferente ou melhor? Envie-nos suas idéias preenchendo o campo de comentário logo a seguir.

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna