回答:
shift
組み込みコマンドを使用して引数を「食べる」。次に、子プロセスを呼び出し、それに"$@"
引数を渡して、残りのすべての引数を含めます。引用符に注意してください。引数リストの展開が適切に引用されるため、引用符は保持する必要があります。
bashは、shiftコマンドを使用します。
たとえば、shifttest.sh:
#!/bin/bash
echo $1
shift
echo $1 $2
shifttest.sh 1 2 3が生成する
1
2 3
$1
、それらを引用することなく、"$1"
例えばので、その後、シェルは、単語分割を行いますfoo bar
と転送されますfoo
とbar
、別途。
Bashはサブセット化パラメーター(サブセットおよびサブストリングを参照)をサポートしているため、このように処理/渡すパラメーターを選択できます。
新しいファイルを開いて編集します:vim r.sh
:
echo "params only 2 : ${@:2:1}"
echo "params 2 and 3 : ${@:2:2}"
echo "params all from 2: ${@:2:99}"
echo "params all from 2: ${@:2}"
それを実行します:
$ chmod u+x r.sh
$ ./r.sh 1 2 3 4 5 6 7 8 9 10
結果は次のとおりです。
params only 2 : 2
params 2 and 3 : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10
params all from 2: 2 3 4 5 6 7 8 9 10