シェルスクリプトの引数リスト全体をプログラムに渡すにはどうすればよいですか?
たとえば、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