一、shell脚本
复制某文件夹下内容到指定位置:
#!/bin/bash
dst="/home/edward/YR/test" #所建文件夹的路径
cp -r /home/edward/Desktop/lost/* $dst
二、通用脚本
package.sh
liblist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') #抓依赖库语句
可执行程序名.sh
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
三、我写的Qt打包shell脚本
①package.sh
#!/bin/bash
#1.判断是否存在YRPackage_UOS目录,没有则创建
cd /home/edward/YR
if [ ! -d "YRPackage_UOS" ];then
mkdir YRPackage_UOS
else
echo dir exist
fi
#2.将YeecohReader.exe拷贝到YRPackage_UOS目录下 【注意路径】
cp /home/edward/YR/YR134/build-YeecohReader-Qt_5_11_3_in_PATH_qt5-Release/YeecohReader /home/edward/YR/YRPackage_UOS
#3.自动抓取依赖库
cd /home/edward/YR/YRPackage_UOS
exe="YeecohReader" #需要发布的程序名称
dst="/home/edward/YR/YRPackage_UOS" #所建文件夹的路径
liblist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') #依赖库
cp $liblist $dst #将依赖库复制到当前目录下
#4.手动添加上一步没抓到的缺失依赖库
cp -r /home/edward/Desktop/lost/* $dst
执行打包脚本,库就都抓取(复制)过来了
②YeecohReader.sh
#!/bin/sh
#1.设置变量
DSTUSER=`whoami`
DSTHOME=/home/$DSTUSER
DSTYEECOH=$DSTHOME/.yeecoh
#2.检查是否已经存在.yeecoh目录(在第一次执行时进行.yeecoh目录的拷贝)
cd $DSTHOME
if [ ! -d ".yeecoh" ];then #如果文件夹不存在
cp -R /opt/apps/yeecohreader/files/Yeecoh $DSTYEECOH
chmod -R a+w $DSTYEECOH
else
echo .yeecoh exist
fi
#3.执行可执行程序
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/apps/yeecohreader/files #重新设置动态库搜索路径LD_LIBRARY_PATH
$dirname/$appname "$@" #执行可执行程序