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

前端之家收集整理的这篇文章主要介绍了复制程序及其依赖的库文件到指定目录的脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

#!/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

猜你在找的设计模式相关文章