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

上記の内容を「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

上記の内容を「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 ;

コメントを残す

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