モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

シェルスクリプトの自動ヘルプ

明日の自分は昨日の他人、という言葉がありま…すかどうかは知らないというか、今作ったわけですが、いつも自分で作ったスクリプトの引数などをど忘れすることがよくあります。

かといってドキュメントを詳細に作ればデバッグや機能追加に従い面倒が増え、放置され、どんどん実際とかけ離れていくという、プログラミングあるあるな状態がスクリプトでも繰り広げられるわけです。

そこでオイラとしては、ソースこそ最良のドキュメントという言葉を胸に、--helpなどを与えられると単にcat $0してexitするようにしておいたのですが、これだと長いスクリプトで見通しが悪いですよね。まぁheadに流しこめばいいのかもですが、ある程度コマンドライン解析部分が長いと、これまた全部見えない危険性が。

そんなわけで「行頭に存在する」#-----# というスタイルのコメント文(ハイフンはひとつ以上で適合)でのマーカーを埋め込んでおき、それが出現するまでの間を表示するというのをgrepsedでたらい回しにしてやってみました。

#!/bin/sh


while [ "$1" != "" ];do

    case $1 in
    --shutdown)
        cmd_after="shutdown"
        ;;
    -h | --help)
        linenum=`cat $0 | grep -n -e '^#--*#' | sed -e 's/:.*//g'`
        head -n $linenum $0
        exit 0
        ;;
    * )
        echo $1 is unrecognized option
        ;;
    esac

shift 1
done

#----------------------#

echo "以下script実体部分"
echo "--helpでは、ここまでは表示されないわけで"

…しかし、--helpすら忘れる事があるのはどうしたものだろうか?