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.

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)