おひさしぶりです。
cowsay コマンドでランダムに絵柄を変えたいと思っていたんですが、 そのためにはランダムで絵柄を指定する必要があります。
絵柄の一覧は次のようなコマンドで取得できます。
$ cowsay -l | grep -v "^Cow"
ここから、ランダムに 1行取得します。 最初は Bash の配列を使って 次のようにやってました。
$ LIST=(`cowsay -l | grep -v "^Cow"`) $ FMT=${LIST[$(($RANDOM % ${#LIST[@]}))]}
1行でできないかと調べていたら sort コマンドには -R オプションが あったりすることを知りました。
次のようになりました。
$ cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | sort -R | head -n 1
cowsay と fortune も入れて、これで完成です。
$ fortune | cowsay -n -f `cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | sort -R | head -n 1`
・・・と思っていたら、shuf なんてコマンドもあるようで 次のようになりました。
$ fortune | cowsay -n -f `cowsay -l | grep -v "^Cow" | sed -e "s/ /\n/g" | shuf -n 1`
色々とありますね。
テキスト処理は覚えておくと、開発中のちょっとしたことに使えて便利なので 遊びながら覚えていきたいものです。