首页 > 解决方案 > 如何执行 jar 文件中的 .sh 文件

问题描述

我在某个位置有 jar 文件。(/test/lib/myproject.jar)。

在那个 jar 文件中,我有 .sh 文件 ( /org/com/api/demo.sh)。

现在我想执行那个demo.sh文件。如何在 Linux/Unix 中执行该文件?

标签: linuxshellunixjar

解决方案


您可以使用unzip来提取文件,并将其通过管道传输sh到运行它。

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

请注意 zip 文件通常不能包含绝对路径。第一个参数unzip是存档,其余参数命名要提取的存档成员;该-p选项表示提取到标准输出。

作为一种特殊情况,如果您需要在当前 shell 的上下文中执行代码(即有效地执行source它),这是在其中包装命令$(...)有意义的罕见情况之一。(很多初学者喜欢尝试把这个放在各种奇怪的地方。)

$(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

推荐阅读