シェルスクリプトの引数リスト全体をプログラムに渡すにはどうすればよいですか?
たとえば、JavaFooというJavaプログラムがあり、任意の数の引数を取る場合、これはスクリプト内で呼び出す必要があります。
スクリプトの引数をJavaプログラムに渡すにはどうすればよいですか?
シェルスクリプトの引数リスト全体をプログラムに渡すにはどうすればよいですか?
たとえば、JavaFooというJavaプログラムがあり、任意の数の引数を取る場合、これはスクリプト内で呼び出す必要があります。
スクリプトの引数をJavaプログラムに渡すにはどうすればよいですか?
Bashの場合:
#!/usr/bin/env bash
java /path/to/JavaFoo "$@"
Bashスクリプト自体に渡されるものとして個別に引用されたすべてのパラメーターを渡すため。Dashでも動作しますが、他のBourne互換シェルについてはわかりません。
シェルスクリプトの最初のパラメータを除くすべてをJavaプログラムに渡したい場合は、次のshift
ように使用します。
#!/usr/bin/env bash
shift
java /path/to/JavaFoo "$@"
必要に応じて、より多くのインスタンスを使用shift
して、パラメータを渡す前に、より多くのパラメータを削除します。
したがって、次のようにシェルスクリプト(myscript
)を呼び出すとします。
./myscript a b c
をshift
取り除きa
ます。もう1つ追加するshift
と、も削除されb
ます。多くのシェルの"$@"
ようにスクリプトにアクセスできますが、スクリプト自体の名前は含まれていません。$0