./script.sh arg1 [arg2 arg3 ...]
、、...コマンドラインパラメータはarg1
、、、...で取得できますが、arg2
パラメータの数は次のとおりです。$1
$2
いいえ安定した。
arg2
シェルスクリプトから次から始めて、プログラムに引数を渡したいと思います。
#/bin/bash
...
/path/to/a/program [I want to pass arg2 arg3 ... to the program]
...
1つ以上のパラメータがある可能性がありますが、どうすればよいですか?
答え1
一般的なアプローチは、コピーを保存することです。アルギニン1("$1"
)引数を1ビット移動するので、リスト全体を次のように参照できます"$@"
。
#!/bin/sh
arg1="$1"
shift 1
/path/to/a/program "$@"
Bashは間違いなくいくつかの配列サポートを提供しますが、質問ではこれを要求しません。
もしアルギニン1オプションなので、次のように確認できます。
if [ $# != 0 ]
then
arg1="$1"
shift 1
fi
答え2
パラメータ拡張を使用して、位置パラメータを分割できます。構文は次のとおりです。
${parameter:offset:length}
省略すると、length
最後の値が考慮されます。
2番目のパラメーターから最後のパラメーターに渡すには、次のものが必要です。
${@:2}
例:
$ foo() { echo "${@:2}" ;}
$ foo bar spam egg
spam egg