LoginSignup
24
21

More than 5 years have passed since last update.

bashで自作コマンド作る時の最小テンプレ

Last updated at Posted at 2015-07-02

必須オプションあり、ファイルか標準入力を入力とする形のコマンドを自作する際のテンプレ。

#!/bin/bash

# ヘルプ出力関数
usage(){
cat << _EOS_
  Usage:
    $(basename $0) [-f] <-d data> file
    $(basename $0) <-h|--help>
_EOS_
}

# オプション解析で使う変数の初期化
FLAG=0
DATA=""

# オプション解析
OPTS=$(getopt -o "fd:h" -l "help" -- "$@")
[ $? -ne 0 ] && usage >&2 && exit 1
eval set -- "$OPTS"
while :; do
    case "$1" in
    '-f') FLAG=1; shift;;
    '-d') DATA=$2; shift 2;;
    '--') shift; break;;
    '-h'|'--help')usage; exit 0;;
    *) echo "[error] illegal option" >&2; usage >&2; exit 1;;
    esac
done

# 必須オプションの確認
[ -z "$DATA" ] && echo "[error] missing option '-d'" >&2 && usage >&2 && exit 1

# 入力を変数に受ける
if [ $# -eq 0 ] && [ ! -t 0 ]; then
    INPUT=$(cat -)
elif [ $# -eq 1 ]; then
    INPUT=$(cat $1)
else
    echo "[error] missing input" >&2
    usage >&2
    exit 1
fi

# Main
# 以下、メインの処理

更新履歴

  • 2015/07/04 getoptのエラー拾うのを忘れてました。 getopt結果を一旦変数に入れるようにして、[ $? -ne 0 ] && usage >&2 && exit 1を追加。
24
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
21