pack_linux_binary

二进制的文件需要将压缩包的数据和shell脚本打包的为一个整体

为避免多个sh文件使用 cat << EOF 来生成上面的sh文件,这样只需要下面这个sh文件就可以将指定的文件夹压缩,同时添加 执行命令那部分内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# !/bin/bash

echo '压缩文件。。。'


INSTALL_DIR=$(cd `dirname $0`; pwd)

tar -zcvf $INSTALL_DIR/XXXX.tar.gz $INSTALL_DIR/install/*
cat << EOF >>$INSTALL_DIR/install.sh
#!/bin/bash
#Test shell self-extracting
TmpDir=/tmp/XXX

TARGET_DIR=./XXX


if [ ! -d \${TmpDir} ]; then

mkdir \$TmpDir
echo \$TmpDir 路径下不存在,正在创建
else
echo \$TmpDir 文件将会被覆盖
rm -rf \$TmpDir/*
fi

ARCHIVE=\$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "\$0")
tail -n+\$ARCHIVE "\$0" | tar -xzvm -C \$TmpDir > /dev/null 2>&1 3>&1

if [ ! -d \${TARGET_DIR} ]; then

echo \$TARGET_DIR 路径下不存在现在创建
mkdir \${TARGET_DIR}
else
echo \$TARGET_DIR 路径下的文件将会被覆盖
rm -rf \${TARGET_DIR}/*

fi
cp -R \$TmpDir/* \${TARGET_DIR}


echo '-------------------------------------------------------------------------------------------------'
echo '********************************准备初始化 服务****************************************'
echo '-------------------------------------------------------------------------------------------------'

/bin/sh \$TARGET_DIR/install.sh


exit 0
#This line must be the last line of the file
__ARCHIVE_BELOW__
EOF


cat $INSTALL_DIR/install.sh $INSTALL_DIR/XXX.tar.gz > $INSTALL_DIR/XXX_install.run
rm -f XXX.tar.gz
rm -f install.sh