使shell脚本可执行

Har*_*rry 2 linux bash shell

我有两个文件用于部署,

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

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

它按预期工作.

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

那么是否有可能使deploymentpackage.zip可执行文件成为可执行文件,以便我不希望有另一个脚本deployment.sh.

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

谢谢,
哈利

Sto*_*ica 9

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

#!/usr/bin/env bash

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

unzip <(tail -n +$((LINENO + 2)) "$0")
exit
Run Code Online (Sandbox Code Playgroud)

确保脚本\n在行的末尾有换行符exit.并且,重要的是脚本的最后一行是exit命令,并且unzip命令with tail就在它前面.

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

cat file.zip >> installer.sh
Run Code Online (Sandbox Code Playgroud)

用户将能够运行installer.sh,这将unzip是文件末尾的压缩内容.