2015-11-22 2 views
1

У меня есть Java-программа, которая работает как служба в linux box. У меня есть файл сценария оболочки, который имеет следующую строку для запуска программы.Сценарий оболочки Linux для вызова Java-программы с аргументами

$EXEC -home "$JAVA_HOME" -cp "$CLASS_PATH" -outfile "$LOG_OUT" -errfile "$LOG_ERR" -pidfile "$PID" $1 $CLASS 

$CLASS_PATH has class path 
$CLASS has the name of main class 
EXEC="/usr/bin/jsvc" 

можно запускать и останавливать службу с помощью следующих команд

  • служба myscriptfilename начать

  • служба myscriptfilename остановки

Теперь я добавил новый аргумент в свою программу под названием «myflag». Он отлично работает на окнах. Теперь мне трудно передать новый аргумент моей программе в моем linux-поле, используя сценарий оболочки.

Теперь я начинаю свою службу как

  • сервис myscriptfilename начать myflag

я могу получить значение myflag с помощью $ 2 в сценарии оболочки. Я пытаюсь выяснить, как передать это в свою программу

Как передать мою «myflag» в мою программу из сценария оболочки в следующей строке?

$EXEC -home "$JAVA_HOME" -cp "$CLASS_PATH" -outfile "$LOG_OUT" -errfile "$LOG_ERR" -pidfile "$PID" $1 $CLASS 
+0

вы спрашиваете [это] (http://stackoverflow.com/questions/9057387/process-all-arguments-except-the-first- один)? – user3707125

+0

Я могу получить значение myflag, используя $ 2 в shell scriipt. Я пытаюсь выяснить, как передать это программе? –

+0

Кто знает, как ваша программа анализирует аргументы командной строки. Нет согласованного стандарта, поэтому может быть миллион способов. Это ваша * программа в конце концов, и вы должны знать лучше, чем мы ... (Вы даже не сказали, что такое '$ EXEC', если это известно, возможно, это известно всем программистам на Java? Я не уверен.) – 4ae1e1

ответ

1

Я рассматриваю, что $EXEC является Java исполняемый файл, $1 ваш JAR, $CLASS Ваш главный класс. В этом случае просто добавьте ${@:2} до конца строки:

$EXEC -home "$JAVA_HOME" -cp "$CLASS_PATH" -outfile "$LOG_OUT" -errfile "$LOG_ERR" -pidfile "$PID" $1 $CLASS ${@:2} 
+0

EXEC = "/ usr/bin/jsvc" и $ 1 = начать с службы команд myscriptfilename start myflag –

+0

Должен работать все же - у него есть аналогичные [параметры выполнения] (http: // commons.apache.org/proper/commons-daemon/jsvc.html). – user3707125

+0

Это не сработало –

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