2017-06-16 31 views
0

我有一个Bash shell脚本,它将三个输入文件作为参数。我想将它们全部打包,所以我可以将该软件包放在任何UNIX计算机上并运行它。在Solaris/AIX中是否有任何实用程序来打包shell脚本?

+0

真的不清楚你想做什么。你想'打包'你的脚本,或者你的脚本应该'打包'文件? –

+0

想打包我的脚本。 – Rohith

+0

你期待什么样的包装? Solaris使用SVR4封装标准(或从Solaris 11开始的IPS),但AIX使用自己的BFF标准。无论如何,如果它包含单个文件,那么打包实用程序有什么意义? – jlliagre

回答

2

有一个古老而古老的技术,包括众所周知的白发苍苍管理员一个可执行的tar文件;)

首先创建一个脚本...把它放到一个文件名为脚本

#!/bin/bash 
TAR_STARTS=`awk '/^__TARMAN BEGINS__/ { print NR + 1; exit 0; }' $0` 
NAME_OF_SCRIPT=`pwd`/$0 
tail +$TAR_STARTS $NAME_OF_SCRIPT | gunzip -c | tar -xvf - 
# Insert commands to execute after untaring here .... with relative 
# pathname (e.g. if there is directory "bin" with a file "executable" 
# then you should insert a line bin/executable 
exit 
__TARMAN BEGINS__ 

不换行的最后__

当然这个脚本是从某处互联网后而得。不是我的。我只是不记得正确的荣誉在哪里。

然后创建您的tarfile并将其放在文件的末尾。这就是为什么它nescessary的原因有是__

$ cat script test.tar.gz > selfexploding.sh 

现在后不换行你可以尝试一下

$ bash ./selfexploding.sh 
tar: blocksize = 9 
x testtar, 0 bytes, 0 tape blocks 
x testtar/test2, 1024 bytes, 2 tape blocks 
x testtar/test1, 1024 bytes, 2 tape blocks 

你当然可以把名字脚本的退出之前,该你通过解压创建...当然,路径必须是相对于执行的pwd。不知道这是否适用于AIX。至少在Solaris 11.3中起作用。但是因为它只使用标准命令。它应该到处工作。除此之外,您当然可以为Solaris和AIX创建本地软件包。

相关问题