関連記事: Linux シェルスクリプト: コマンドライン引数を取得する ($1
, $@
, $*
)
コマンドライン引数が足りないときに Usage 出力して終了する
シェルスクリプト起動時に渡されたコマンドライン引数の数は、$#
変数で取得することができます。
シェルスクリプトが最低 2 つのパラメーターを必要としている場合は、先頭部分で下記のようなチェックをするのがよいでしょう。
#!/bin/bash
if [ $# -lt 2 ]; then
echo "Usage: $(basename $0) <file1> <file2>" >&2
exit -1
fi
# 処理を継続
下記はバリエーションです。
#!/bin/bash
if [ ! "$1" ]; then
echo "Usage: $(basename $0) <file>" >&2
exit -1
fi
# 処理を継続
#!/bin/bash
if [ ! "$1" ]; then
echo "Usage: $(basename $0) <file>" >&2
exit -1
fi
if [ ! -f "$1" ]; then
echo "$1 is not found" >&2
exit -1
fi
# 処理を継続
コマンドライン引数が指定されていないときにデフォルト値を使用する
1 番目のコマンドライン引数を参照するときに ${1:-XXX}
とすると、引数を省略したときに XXX
というデフォルト値が返されます。
例えば、次の例では、コマンドライン引数で「出力先ディレクトリ」を指定できるようにしていますが、省略した場合のデフォルトとして out
ディレクトリを使用するようにしています。
#!/bin/bash
out_dir=${1:-out}
echo out_dir: $out_dir
$ ./sample.sh foo
out_dir: foo
$ ./sample.sh foo bar
out_dir: foo
$ ./sample.sh "foo bar"
out_dir: foo bar
$ ./sample.sh
out_dir: out
$ ./sample.sh ""
out_dir: out