我有两个用于部署的文件,
1)deploymentpackage.zip
- >它包含几个shell脚本的数据库包。
2)deployment.sh
- >它是主shell脚本,首先解压缩deploymentpackage.zip,然后执行其中的shell文件列表。
它按预期工作。
但我需要的是,我需要将zip文件设置为可执行文件,以便我不想将deploymentpackage.zip
和deployment.sh
同时发送给客户端。
那么是否可以将deploymentpackage.zip
作为可执行文件,以便我不想要另一个脚本deployment.sh。
期望:运行此deploymentpackage.zip
应解压缩同一文件并运行其中的脚本列表。
谢谢,
哈利
答案 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不喜欢它,非常感谢:)