2012-05-18 5 views
1

Как передать весь список аргументов сценария оболочки программе?сценарий оболочки с параметрами переменной длины

Так, например, если у меня есть Java-программа под названием JavaFoo, которая будет принимать любое количество аргументов, и это должно быть вызвано внутри моего скрипта.

Как передать аргументы скрипта программе java?

+1

Какую оболочку вы используете? – FatalError

+0

Я думаю, что это 'bash' –

+0

На самом деле это оболочка Bourne –

ответ

1

В Bash:

#!/usr/bin/env bash 
java /path/to/JavaFoo "[email protected]" 

передать все параметры индивидуально цитируемые, как передается сам Баш скрипт. Работает также с Dash, но я не знаю о других совместимых с Bourne оболочках.

Предположим, вы хотите, чтобы пройти весь, но первый параметр в скрипт на программе Java, использовать shift вроде этого:

#!/usr/bin/env bash 
shift 
java /path/to/JavaFoo "[email protected]" 

Используйте несколько экземпляров shift, чтобы избавиться от нескольких параметров до прохождения им при необходимости.

Так сказать, вы вызываете скрипт (myscript) следующим образом:

./myscript a b c 

shift избавится от a. Добавьте еще один shift, и он также избавится от b. Имя самого скрипта не включено в "[email protected]", хотя вы можете получить к нему доступ как $0 во многих оболочках.

+0

Да, добавление этого работает для меня:' java JavaFoo "$ @" '. Спасибо –

+0

К сожалению, извините. Я предполагал, что файл Java имеет hashbang :) – 0xC0000022L

+0

Что будет делать 'shift' в этом конкретном случае? Так скажите, если бы я назвал скрипт следующей командой './myscript a b c', тогда скрипт избавился бы от аргумента 0 (который является' myscript ') и только передал' a b c 'в мою java-программу? –

Смежные вопросы