shell合成升级包的流程

1、定义一些名称和变量

name=name      #定义名称
unshname=uninstall${name}.sh   #卸载脚本文件的功能
appname=appname             
installpath=/opt/${name}     #安装的路径,并且给被安装的文件命名

2、检查是否存在一个名为$unshname ,如果存在,则执行该文件以卸载旧版本的软件

if [ -f "/usr/bin/$unshname" ];then
    echo "=========== 卸载旧版本软件 ============="  
    /usr/bin/$unshname  
    echo "====================================="  
    echo ""  
fi

3、将压缩包当中的安装文件提取到临时文件中。

  • -n: 只输出经过编辑的行。
  • -e: 紧跟着的参数是要执行的sed脚本。
  • '1,/^exit 0/!p': "从第一行开始到第一个匹配'^exit 0'的行之前的所有行都打印出来"。在这个例子中,它的作用是提取Shell脚本中'exit 0'之前的内容。
  • $0: 是一个特殊变量,表示当前正在运行的脚本文件的名称。
  • sed -n -e '1,/^exit 0/!p' $0 > ${tmpfile_name} 2>/dev/null的意思将Shell脚本中'exit 0'之前的内容提取出来,并写入一个临时文件${tmpfile_name}中。同时,它将忽略任何发生的错误。
tmpfile_name=/tmp/${name}.tgz   #定义了临时文件
echo -e "\t                     #准备安装软件
  
#从当前脚本中分离出压缩包部分,写入到临时文件${tmpfile_name}
sed -n -e '1,/^exit 0/!p' $0 > ${tmpfile_name} 2>/dev/null

tar xzf ${tmpfile_name} -C /tmp #解压压缩包
rm -rf ${tmpfile_name}          #删除压缩包
cd /tmp                         #切换到放置压缩包的目录中

4、检查是否存在路径$installpath,如果不存在,则创建该路径

if [ ! -d $installpath ] ;then
    mkdir -p $installpath
fi

5、安装库文件和工具文件

sed -i '1i/${installpath}' ${name}/$configname

  • -i: 直接在原始文件中进行修改,而不是输出到终端或另一个文件。
  • '1i/${installpath}': 1i表示在第一行之前插入,${installpath}是一个变量,它的值将被插入到指定文件中。
  • ${name}/$configname: 这是要进行修改的文件路径。${name}$configname也是变量,其具体值会根据上下文而定。

所以,这个命令的作用是将${installpath}的值插入到${name}/$configname文件的第一行之前,并将修改后的内容保存回${name}/$configname中。

echo -e "\t 安装库文件和工具软件" 
configname=${name}.conf                          #配置文件的名称
touch ${name}/$configname                        #创建一个空的配置文件
sed -i '1i/${installpath}' ${name}/$configname   #将前面文件的内容输入到第二个文件的第一行前面
cp ${name}/$configname /etc/ld.so.conf.d/        #将配置文件复制到/etc/ld.so.conf.d/目录
sed -i '1i/${installpath}' ${name}/$configname
cp ${name}/$configname /etc/ld.so.conf.d/
ldconfig                                         #ldconfig命令重新加载库文件
cp -r ${name}/* $installpath                #将${name}文件夹的所有文件复制到${installpath}。

6、删除临时文件夹${name},输出“安装完成

rm -rf ${name}
echo -e "\t 安装完成"  
exit 0

猜你喜欢

转载自blog.csdn.net/weixin_45981798/article/details/131778219