Подтвердить что ты не робот

Как передать аргументы из оболочки оболочки script в приложение Java?

Я хочу запустить Java-программы, которые я создаю в командной строке (linux и mac). Я не хочу набирать "java" и аргументы все время, поэтому я думаю о создании сценариев-оболочек. Какой лучший способ сделать это, чтобы они работали повсюду? Я тоже хочу иметь возможность передавать аргументы. Я думал использовать "shift" для этого (удаление первого аргумента).

Есть ли лучший способ сделать это без использования скриптов? Возможно, сделать исполняемый файл, который не требует вызова через команду "java"?

4b9b3361

Ответ 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... для получения дополнительной информации о том, как оболочка обрабатывает кавычки.

Ответ 2

Вы можете создать сценарий оболочки, который принимает аргументы. В вашем сценарии оболочки это будет выглядеть примерно так:

java YourApp $1 $2

В этом случае YourApp принимает два аргумента. Если ваш сценарий оболочки называется app.sh, вы можете выполнить его так:

./app.sh FirstArgument SecondArgument