関数に渡されたパラメータの処理方法は、シェルスクリプト実行時に渡されたコマンドラインパラメータの処理方法と同じです。 下記のコマンドラインパラメータの処理方法に関する記事も参考にしてください。
関数内で $#
を参照すると、渡されたパラメータの数を調べることができます。
function foo {
echo $#
}
$ foo 100 200
2
$ foo aaa bbb ccc
3
$ foo "This is a pen"
1
$#
を参照すると、シェルスクリプト実行時に渡されたコマンドラインパラメータの数を取得できます。
function foo {
if [ $# -lt 1 ]; then
echo 'Function "foo" needs at least one parameter' >&2
exit -1
fi
echo 'OK'
}
function enum_params {
while [ -n "$1" ]; do
echo $1
shift
done
}
$ enum_params 1 2 3
1
2
3
パラメータをシングルクォーテーション、あるいはダブルクォーテーションで括ると、1つのパラメータとして処理されます。
$ enum_params "1 2 3"
1 2 3
パラメータを参照するときに、${1:-デフォルト値}
という形で参照すると、1つ目のパラメータが指定されなかった場合に デフォルト値
を使用することができます(これも、シェルスクリプト自体のコマンドラインパラメータの扱い方と同様です)。
function greet {
name=${1:-everyone}
echo "Hello $name"
}
$ greet
Hello everyone
$ greet Maku
Hello Maku