Ответ 1
Предполагая, что вы используете оболочку, совместимую с оболочкой Bourne; Например, sh, bash, ksh и т.д. следующая оболочка передаст все аргументы командной строки команде java:
#!/bin/sh
OPTS=...
java $OPTS com.example.YourApp "[email protected]"
[email protected]
Расширяет оставшиеся аргументы для сценария оболочки, а заключение в кавычки приводит к тому, что аргументы заключаются в индивидуальные кавычки, так что в следующем случае один аргумент будет передаваться в Java:
$ wrapper "/home/person/Stupid Directory Name/foo.txt"
Без двойных кавычек вокруг "[email protected]"
в скрипте-оболочке Java получит три аргумента для вышеприведенного.
Обратите внимание, что это не работает с "$*"
. В соответствии с инструкцией bash
:
"$*"
эквивалентно"$1c$2c..."
, гдеc
- первый символ значения переменнойIFS
.
Другими словами, все аргументы оболочки будут объединены в один командный аргумент для вашего Java-приложения, игнорируя исходные границы слов.
Обратитесь к руководству по bash
или sh
... или к спецификации оболочки POSIX... для получения дополнительной информации о том, как оболочка обрабатывает кавычки.