在zip存档中执行shell脚本

时间:2017-09-26 09:56:59

标签: shell unix sh

我在Linux系统中有一个庞大的文件夹。在其中,我有一个zip存档,其中包含几个shell脚本。我需要执行这些shell脚本,但挑战在于我没有对此文件夹的写入权限。此外,我也无法将其移动到其他目录,因为此文件的位置对其执行至关重要。它不适用于任何其他目录。

有没有办法从zip存档中执行shell脚本而不提取它?

1 个答案:

答案 0 :(得分:2)

只需指定zip文件后的路径即可解压缩一个特定文件:

$ unzip c.zip a.sh
Archive:  c.zip
 extracting: a.sh 

在此命令中,a.sh是您要运行的脚本的路径。

您可以使用-p参数将内容打印到标准输出:

$ unzip -p c.zip a.sh
#!/bin/sh

echo "this is a.sh; it is now $(date)"

最后,您可以将其传递给sh以运行它:

$ unzip -p c.zip a.sh | sh
this is a.sh; it is now Tue Sep 26 11:02:28 BST 2017

请注意,相当多的shell脚本都假定bash,因此您可能希望将其管道传输到bash而不是sh,具体取决于脚本。