Вы можете использовать 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