У меня возникают трудности с запуском java-программы из сценария оболочки (bash), в котором используются вложенные переменные. По сути, есть много системных и -D свойств Java, которые необходимо передать в программу Java. Я хотел бы организовать их более удобным способом один под другим, так как их очень трудно читать, когда они находятся в одной строке.
Это похоже на "Передача пробела -разделенное системное свойство через скрипт оболочки не работает", но не то же самое.
Вот урезанный образец. Представьте себе такую Java-программу:
public class Main {
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
}
}
При вызове вот так:
java Main "First_Line" "Second line with spaces"
Это даст OK результат, как этот ответ:
First_Line Second line with spaces
Однако, если используется такой скрипт:
#!/bin/sh
PARAM01="FirstLine"
PARAM02="Second line with spaces"
PARAMS="$PARAM01 $PARAM02"
java Main $PARAMS
Затем все пробелы съедаются, а второй параметр без кавычек передается в java. Результат выглядит следующим образом:
FirstLine Second line with spaces
Пытались по-разному указывать переменные в сценарии оболочки, но пока безуспешно. Как заключать в кавычки переменные оболочки, чтобы пробелы сохранялись, а параметр передавался в java без изменений?
java Main "$PARAMS"
- person anubhava   schedule 25.03.2014