シェルスクリプト(ここではbash)で引数を受け取るときは、$(ダラー)を使って表現します。
例えば、最初の引数は $1、2 番目の引数は $2 のように、9 個の引数($9)まで利用することができます。
じゃあ、10 個以上は引数を与えれないのかっていうと、実は 10 個以上の引数も受け渡しが可能になります。
10個以上の引数を扱う方法
引数の順番をシフトさせると、2 番目の引数が 1 番目($1)に、3 番目の引数を 2 番目($2)に移動させることができます。
(元には戻せませんので注意が必要です)
まあ、$* や $@ を利用してもいいのですが、この方法の良いところは shift をそのまま記述するだけというところです。
よって、shift を 1 回実行した後は、$9 に 10 番目の引数が入っていることになります。
参考例
下に簡単なスクリプトを書いてみました。
(rilakkuma.sh)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/sh # 1 番目と 2 番目の引数を受け取る INPUT1=$1 INPUT2=$2 echo "first = ${INPUT1}"; echo "second = ${INPUT2}"; # シフト shift; # 1 番目の引数を受け取る INPUT3=$1 echo "first = ${INPUT3}"; exit 0; |
試しに 1 と 2 を引数として渡します。
実行結果は下記の通りです。見事に、2 番目の引数が $1 で表現できています。
1 | $ ./rilakkuma.sh 1 2 |
first = 1
second = 2
first = 2