コンテンツにスキップ

Getopts

最終更新日: 2021-11-12

シェルスクリプトでオプションパラメーターを解析するやつ 基本 shift と合わせて使う

サンプルコード

とりあえず最低限の動作サンプル的なやつ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/sh

usage_exit () {
    echo "Usage: $0 [-p piyo] [-f] <foo> <bar>"
    exit 1
}

# オプション名の後ろに `:` をつけるとパラメーターを取れる、つけないと取れない
# オプション先頭に `:` をつけるとエラーハンドリングを自動でしなくなる
#  e.g. `getopts :p:fh`
while getopts p:fh OPT
do
    case $OPT in
            p) piyo=$OPTARG
            ;;
            f) fuga=1
            ;;
            h) usage_exit
            ;;
            \?) usage_exit
            ;;
    esac
done

# オプション分の引数をずらす
# これがないとオプションが `$1` とかに入ってくる
shift $((OPTIND - 1))

# オプションを抜いた引数を取る
foo=$1
bar=$2

echo $foo
echo $bar
echo $piyo
echo $fuga