bash プログラミング:引数と終了ステータス
bash のシェルプログラミングでにのヘッダーと引数、終了ステータスなどについて説明する。
スクリプトヘッダー
#!/bin/bash |
スクリプトの1行目には、必ず上記の項目を追加する。
引数の参照
引数の参照は以下のように行います。
#!/bin/bash # $0 にはプログラム名が入る。 echo “program is $0”; # “$@” は “$1” “$2” … に展開される。 # つまり、引数に空白が入っても問題ない。 for ARGV in “$@”;# $@ に入っている引数を1つずつ取り出す。 do # 引数を表示 echo $ARGV; done; # 終了 exit 0; |
上記の内容を「1.sh」として保存し、「chmod +x 1.sh」としてから実行。
$ ./1.sh aaa bbb ccc ‘DDD EEE’ program is ./1.sh aaa bbb ccc DDD EEE $ |
比較的によく使う変数
- $0
スクリプト名 - $@
引数のリスト。”$@” として使用する。 - $#
引数の個数
オプション引数
bash にはオプション引数を処理する内部コマンドの「getops」があります。
「getopts」はロングオプションは処理出来ません。
似通ったモノに「getopt」がありますが、こちらは外部コマンドであり、Linux / BSD 間で動作が異なる様です。汎用性を求める場合は使用してはいけません。
getopts の使い方
通常、「getopts」はスクリプトの先頭で、「while」と併用される。
getopts “ショートオプション” オプションが代入される変数 |
#!/bin/bash # ショートオプションは1文字からなる。 # -a -b と -ab は同じ扱いになる。 # : はそのオプションが引数を持つことを意味する。(この場合は c オプション) SHORT_OPTION=”abc:d”; # getopts は引数を順次処理していく while getopts “${SHORT_OPTION}” OPTION; do # 解析した結果のショートオプションが # 逐次 OPTION に代入される。 echo “OPTION is ${OPTION}”; if [ ${OPTION} = “c” ]; then # c オプションは引数を持つ。 # c オプションの引数は OPTARG に代入される。 echo “arg of ${OPTION} is ${OPTARG}”; fi done exit 0; |
上記の内容を「2.sh」として保存し、「chmod +x 2.sh」としてから実行。
$ ./2.sh -ab -c XX -d OPTION is a OPTION is b OPTION is c arg of c is XX OPTION is d $ |
終了ステータス
終了ステータスは「exit」コマンドを利用して指定します。
正常終了は「0」を指定し、異常終了は「0」以外の正の整数(エラー番号)を指定します。
# 正常終了 exit 0 ; |
# 異常終了 exit 1 ; |