7月 01

シェルスクリプトでオプションを扱う

unixコマンドではこんなふうにオプションついたりするわけですが、

tar czf archive-file-name.tar.gz ./somewhere-direcotries

これを自作のスクリプトでもやってみたいなあ、とか思ったのが運の尽き


# options
BAR=
RESTAURANT=
CAFE=

while getopts br:c: OPT
do
  case $OPT in
    b) BAR='YES'
        ;;
    r) RESTAURANT=${OPTARG}
        ;;
    c) CAFE=${OPTARG}
        ;;
    \?) Usage
        return 1
        ;;
  esac
done
shift `expr $OPTIND - 1`

while getopts br:c: OPT ←ここの br:c: というのがシェルスクリプトのオプションを指している。コロン:がついているのは引数をとるオプション、コロンなしのやつはフラグ的なオプション。${OPTARG}にはオプションの引数の値が入っている。これを実行するときは

XXXX.sh -b -r Dennys -c Starbucks

こんなふうに打つ。

whileまわしてcaseでつかまえなきゃいけないのが、ちょーめんどくさい。


6月 30

sh か bash か、それが問題だ

サーバのバックアップを手作業でやっていた。
とは言っても、あらかじめ作っておいた手順のとおりにコマンドをコピペするだけ。
この場合、15〜30分くらいかかっていた。

しかし、シェルスクリプト化したら15秒でバックアップ作業が終わった。
シェルスクリプト化に要した工数はおよそ2人日というところかな。

さて本題、このシェルスクリプトは sh で書いたのだけれど、bash のほうがよかったのかな。