文章目录
二进制的文件需要将压缩包的数据和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
|
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
|