• カテゴリー別アーカイブ bash
  • Linux » bash
  • [bash] 引数の処理に関する覚書

    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