copy命令及库文件至/mnt/sysroot/目录shell脚本
#!/bin/bash#
#获取目标目录
target=/mnt/sysroot
#命令copy函数
cmndcopy(){
#假如命令不存在,return 1
if ! which $1 &> /dev/null; then
return 1
fi
#获取命令决定路径
cmnd=$(which --skip-alias $1)
#获取命令目录名
cmndpath=$(dirname $cmnd)
#判断命令目录名是否存在,否,则创建
[ -d $target/$cmndpath ] || mkdir -p $target/$cmndpath
#判断命令是否存在,否,则copy
[ -e $target/$cmnd ] || cp $cmnd $target/$cmnd
return 0
}
#库文件copy函数
libcopy(){
#获取库文件目录名
libpath=$(dirname $1)
#判断库文件目录名是否存在,否,则创建
[ -d $target/$libpath ] || mkdir -p $target/$libpath
#判断库文件是否存在,否,则copy
[ -e $target/$1 ] || cp $1 $target/$1
}
#提示输入要copy的命令,quit可以退出
read -p "Plz enter a command(quit for quiting):" binary
#循环copy命令,遇到quit字符推出循环
until [ $binary == "quit" ]; do
#调用命令copy函数
cmndcopy $binary
#保存命令copy函数返回值
retval=$?
#如果返回值等于0,则
if [ $retval -eq 0 ]; then
#获取命令库文件的路径
binary=$(which --skip-alias $binary)
#循环取出库文件路径
for lib in $(ldd $binary | grep -o "/[^[:space:]]*lib[^[:space:]]*"); do
#调用库文件copy函数
libcopy $lib
done
#如果返回值不为0,则
else
#提示命令输入错误,并可以重新输入
read -p "$binary is not correct, Plz enter again(quit for quiting):" binary
#并提前结束本轮循环
continue
fi
#再次提示输入要copy的命令,quit可以退出
read -p "Plz enter a command(quit for quiting):" binary
done
页:
[1]