Shellスクリプトで、第一番目の引数だけを消費して、残りの引数はその先のプログラムに渡したい、とかそういうときに使えます。
drop2() { echo ${@:3} } drop2 1 2 3 4 5 6 # -> "3 4 5 6"と表示される
要するに、N番目以降の引数全てを取得したいときは、${@:N}
とすればよい、ということになります。
番外編
N番目以降、M個の引数を取得したいときは、${@:N:M}
とすればよいようです。
drop2take3() { echo ${@:3:3} } drop2take3 1 2 3 4 5 6 # -> "3 4 5"と表示される
これを応用すると、N番目からM番目までの引数を取得したいときには、以下のようになるでしょう。
take3to6() { echo ${@:3:(6-3)} } take3to6 1 2 3 4 5 6 # -> "3 4 5"と表示される
また、これには変数が使えるので、
N=3 M=6 takeNtoM() { echo ${@:$N:($M-$N)} } takeNtoM 1 2 3 4 5 6 # -> "3 4 5"と表示される
という使い方もイケますね。