Как выполнить файл .sh, который находится в файле jar - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть файл JAR в каком-то месте. (/test/lib/myproject.jar).

В этом файле JAR у меня есть файл .sh (/org/com/api/demo.sh).

Теперь я хочу выполнитьэтот demo.sh файл.Как я могу выполнить этот файл в Linux / Unix?

1 Ответ

0 голосов
/ 28 сентября 2019

Вы можете использовать unzip, чтобы извлечь файл, и направить его к sh, чтобы запустить его.

unzip -p /test/lib/myproject.jar org/com/api/demo.sh |
sh

Обратите внимание, что ZIP-файлы обычно не могут содержать абсолютные пути.Первый аргумент unzip - это архив, а остальные аргументы дают имя членам архива для извлечения;опция -p говорит, что нужно извлечь в стандартный вывод.

В особом случае, если вам нужно выполнить код в контексте текущей оболочки (то есть, фактически source it), это один изредкие случаи, когда перенос команды в $(...) имеет смысл.(Многим начинающим нравится пытаться поместить это во все виды странных мест.)

$(unzip -p /test/lib/myproject.jar org/com/api/demo.sh)

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

Если вам нужно запустить код более одного раза, сохраните его в файл и пометьте как исполняемый.

unzip -p /test/lib/myproject.jar org/com/api/demo.sh >demo
chmod +x ./demo

и затем запустить его

./demo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...