você está aqui: Home → Colunistas → Cantinho do Shell
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.