FrontPage  Index  Search  Changes  RSS  Login

[shellscript]getopts

getopts.sh
#!/bin/sh

while getopts "xy:z" opt
do
   case $opt in
      x ) echo "Got 'x' flag." ;;
      y ) echo "Got 'y' flag with value=$OPTARG." ;;
      z ) echo "Got 'z' flag." ;;
   esac
done
shift  $(($OPTIND - 1))

if [ ! -z "$1" ]; then
  echo $1
fi
実行サンプル
% ./getopts.sh
% ./getopts.sh -x
Got 'x' flag.
% ./getopts.sh -x -y 100
Got 'x' flag.
Got 'y' flag with value=100.
% ./getopts.sh -x -y 100 -z
Got 'x' flag.
Got 'y' flag with value=100.
Got 'z' flag.
% ./getopts.sh -xz -y100
Got 'x' flag.
Got 'z' flag
Got 'y' flag with value=100
% ./getopts.sh foo
foo
概要
  • getoptsは対応するフラグを引数にとり、結果をリストで返す
    • case分を利用して、対応するフラグを受け取ったときの処理を記述出来る
    • フラグに値が対応している場合、OPTARGという名前の変数に代入される
  • 処理した引数をshiftして以降の引数を1番から始める
    • 変数OPTINDに処理した引数の数が代入されている
    • 変数を$((と))で囲む事で、一時的に整数型として扱う事が出来る
      • 先述のスクリプトでは、$0を考慮してshift回数を-1している
Last modified:2007/02/11 22:35:11
Keyword(s):[shellscript]
References: