«前の日記(2007-10-25) 最新 次の日記(2007-12-28)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2007-12-27 シェルスクリプトでいろいろ

ディレクトリ内の画像をランダムに表示する CGI

Linux カテゴリなんだか、UNIX カテゴリなんだかよくわからなくなってきた。 いつもなら Ruby でちゃっちゃと書く所だけど、この程度ならシェルスクリプトで書いたほうが早いがするので書いてみた。

#!/bin/bash

RANDOM=`date +%s`
FILES=(`ls | grep jpg`)
N=${#FILES[@]}

echo "Cache-Control: no-cache"
echo "Content-Type: image/jpeg"
echo ""

cat ${FILES[`expr $RANDOM % $N`]}

こののスクリプトを適当な名前で保存して実行権つけてやればスクリプトと同じディレクトリ内のファイルがランダムに出力される。 適当に作ったのでファイル名に jpg が含まれているか見てるだけで、拡張子は見てない。

シェルスクリプトで書いたほうが早かったけど、それが速いかどうかは…。これだけで 5個くらいプロセス起動するので、リクエストが多いと重いかもしれない。

bash で乱数を取得するにはシェル変数 RANDOM を使えばいいみたい。

RANDOM
Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RANDOM. If RANDOM is unset, it loses its special properties, even if it is subsequently reset