シェル 位置パラメータ

シェル上で用いることができる変数、位置パラメータについて取り上げます。

位置パラメータは、シェルスクリプトやシェル関数の引数の受け渡しに用いられます。

1以上の数字の頭に$をつけることで参照できます。

例を示します。

#!/bin/bash

echo "$1"
echo "$2"
echo "$3"

このプログラムを実行すると

$ ./sample.sh one two three
one
two
three

このとき、one が$1でtwoが$2でthreeが$3に渡され、echoコマンドで出力されています。

Pythonでいうsys.argvのような機能です。

因みに、$0にはシェルスクリプト名が渡されます。

注意点

位置パラメータはシェル変数のように値を直接代入ができません。

位置パラメータの値を変更するにはset コマンドを使います。

また、10以上の引数を渡すときは注意が必要です。

以下の例は、setコマンドで11個の位置パラメータを作成しました。

$ set one two three four five six seven eight nine ten eleven

10と11個目の引数を見てみましょう

$ echo $10
one0
$ echo $11
two1

10以上の引数を出力したいときは、”{}”で囲む必要があります。

$ echo ${10}
ten
$ echo ${11}
eleven

$@

最後に特殊パラメータである$@を紹介します。

$@は、全ての位置パラメータを引き渡します。

以下は例です。

$ set  one two three four five six seven eight nine ten eleven
$ echo $@
one two three four five six seven eight nine ten eleven

まとめ

シェルスクリプトで$のあとに数字出てきたら位置パラメータであり、引数を参照しています。