シェルスクリプトのshiftで引数制御
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2008-05-27
シェルスクリプト(ここではbash)で引数を受け取るときは、$(ダラー)を使って表現します。例えば、最初の引数は $1、2 番目の引数は $2 のように、9 個の引数($9)まで利用することができます。じゃあ、10 個以上は引数を与えれないのかっていうと、実は 10 個以上の引数も受け渡しが可能になります。
引数の順番をシフトさせると、2 番目の引数が 1 番目($1)に、3 番目の引数を 2 番目($2)に移動させることができます。
(元には戻せませんので注意が必要です)
まあ、$* や $@ を利用してもいいですが。シフトの方法は、shift とそのまま記述するだけです。よって、shift を 1 回実行した後は、$9 に 10 番目の引数が入っていることになります。
下に簡単なスクリプトを書いてみました。
(saratoga.sh)
#!/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 で表現できています。
% ./saratoga.sh 1 2 first = 1 second = 2 first = 2
関連記事
上記の記事に関連する記事(最新の10件)です。


