単語を逆順にする。

バックアップを取るのにプロセスを一気に落とし上げしたいなぁと思い、プロセスを落とす時と上げるときを逆の順番でやるのに、そういえばそんなコマンドはないことに気がついた。文字列を逆にするコマンドはあるんだけどね。

$ echo "hello world" | rev
dlrow olleh

これだと役に立たないので、awkでワンライナーを書く。なんかで使いまわしが利きそうだから、別ファイル 1 でスクリプトにしておく。

#!/usr/bin/gawk
{for (i=NF; i>0; i--) {printf "%s ", $i;} printf "\n" }

これであとは対象のプロセスを変数で列挙して終わり。変数の与え方をもっとスマートにできないもんかねぇ。

#!/bin/bash

SERVICE="apache2 usermin webmin mysql samba nfs-kernel-server nfs-common portmap postfix"

case "$1" in
  start)
  SERVICE=`echo $SERVICE | gawk -f /usr/local/bin/revword.awk`
  FLAG=start
  ;;

  stop)
  FLAG=stop
  ;;

  *)
  echo "Usage: $0 {start|stop}"
  exit 1
  ;;
esac

for i in $SERVICE
do
        /etc/init.d/${i} $FLAG
done
1

/usr/local/bin/revword.awk