加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

复制程序及其依赖的库文件到指定目录的脚本

发布时间:2020-05-22 15:29:06 所属栏目:程序设计 来源:互联网
导读:老师布置的一个题目。脚本可同时接受多个需要拷贝的命令作为参数。 #!/bin/bashPATH=${PATH:=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin}#TARGET=/mnt/sysroot#function cpfile (){[ -f ${TARGET}$1 ] e

老师布置的一个题目。脚本可同时接受多个需要拷贝的命令作为参数。

#!/bin/bash
PATH=${PATH:=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin}
#
TARGET=/mnt/sysroot
#
function cpfile ()
{
[ -f "${TARGET}$1" ] && echo "${TARGET}$1 already exist !" && return 1
SRCDIR="${1%/*}"
DISDIR="${TARGET}$SRCDIR"
[ -d "$DISDIR" ] || mkdir -p "$DISDIR"
cp -Lp  "$1" "$TARGET$1"
#在$TARGET后添加$1是为了确保原文件是个链接文件时,跟踪链接文件并拷贝后名称和原文件相同
}
#
for i
do
type $i | grep "builtin" > /dev/null && ($i is builtin command; continue)
#检查命令是否为shell内置
FILE=$(which $i | grep -v "^alias" | grep -o "[^[:space:]]*")
cpfile $FILE
RETVAL=$?
[[ $RETVAL == 1 ]] && continue
#如果命令已经存在,如果已经复制过了.则其依赖的库文件就不用再复制了
for LIB in $(ldd "$FILE" | grep -o "[^[:space:]]*/lib[^[:space:]]*")
do
cpfile "$LIB"
done
done

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读