使shell脚本可执行

时间:2018-03-18 18:27:51

标签: linux bash shell

我有两个用于部署的文件,

1)deploymentpackage.zip - >它包含几个shell脚本的数据库包。

2)deployment.sh - >它是主shell脚本,首先解压缩deploymentpackage.zip,然后执行其中的shell文件列表。

它按预期工作。

但我需要的是,我需要将zip文件设置为可执行文件,以便我不想将deploymentpackage.zipdeployment.sh同时发送给客户端。

那么是否可以将deploymentpackage.zip作为可执行文件,以便我不想要另一个脚本deployment.sh。

期望:运行此deploymentpackage.zip应解压缩同一文件并运行其中的脚本列表。

谢谢,
哈利

2 个答案:

答案 0 :(得分:9)

如果可以假设将运行该脚本的用户具有unzip实用程序,那么您可以创建如下脚本:

#!/usr/bin/env bash

# commands that you need to do ...
# ...

unzip <(tail -n +$((LINENO + 2)) "$0")
exit

确保脚本在\n行的末尾有一个换行符exit字符。而且,最重要的是脚本的最后一行是exit命令,unzip命令tail正好在它前面。

然后,您可以在此文件中附加压缩内容,例如:

cat file.zip >> installer.sh

用户将能够installer.sh运行,unzip文件末尾的{1}}压缩内容。

答案 1 :(得分:0)

编写自述文件,并要求用户chmod脚本,然后执行它。

出于安全考虑,我希望没有办法自动执行这样的事情......

编辑:收到投票,因为OP不喜欢它,非常感谢:)