bashでシェルスクリプトを書くときにいつも調べ直すので、覚書。いい加減覚えろよ、という話ですが、それはそれとして・・^^;

シェルスクリプトに渡す引数を処理する、getoptsの使い方や、関数に複数の引数を与えるなどのテストです。

#!/bin/bash
_usage() {
    echo "Usage :"
    echo "${0} [-a] [-b HOGE] [-c] [-d HUGA]"
    exit 1
}

_myfunc() {
    echo "arg=$1"
}

_multiargs() {
    echo "arg1=$1"
    echo "arg2=$2"
}

while getopts :ab:cd: OPT
do
    case $OPT in
        a) VALUE_A="TRUE";;
        b) VALUE_B="TRUE";B_VALUE=$OPTARG;;
        c) VALUE_C="TRUE";;
        d) VALUE_D="TRUE";D_VALUE=$OPTARG;;
        :|\?) _usage;;
    esac
done

echo "-a: $VALUE_A"
echo "-b: $VALUE_B VALUE=$B_VALUE"
echo "-c: $VALUE_C"
echo "-d: $VALUE_D VALUE=$D_VALUE"

_myfunc $B_VALUE
_multiargs $B_VALUE $D_VALUE

結果は、以下の通り。

$ getopttest.sh -d DIRS -ab
Usage :
getopttest.sh [-a] [-b HOGE] [-c] [-d HUGA]
$ ./getopttest.sh -d DIRS -ab HOGE
-a: TRUE
-b: TRUE VALUE=HOGE
-c:
-d: TRUE VALUE=DIRS
arg=HOGE
arg1=HOGE
arg2=DIRS

 

 
カテゴリー: bashLinux

zaturendo

中小企業社内SE。

0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です