前端之家收集整理的这篇文章主要介绍了
copy命令及库文件至/mnt/sysroot/目录shell脚本,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#!/bin/bash
#
#获取目标目录
target=/mnt/sysroot
#命令copy函数
cmndcopy(){
#假如命令不存在,return1
if!which$1&>/dev/null;then
return1
fi
#获取命令决定路径
cmnd=$(which--skip-alias$1)
#获取命令目录名
cmndpath=$(dirname$cmnd)
#判断命令目录名是否存在,否,则创建
[-d$target/$cmndpath]||mkdir-p$target/$cmndpath
#判断命令是否存在,否,则copy
[-e$target/$cmnd]||cp$cmnd$target/$cmnd
return0
}
#库文件copy函数
libcopy(){
#获取库文件目录名
libpath=$(dirname$1)
#判断库文件目录名是否存在,否,则创建
[-d$target/$libpath]||mkdir-p$target/$libpath
#判断库文件是否存在,否,则copy
[-e$target/$1]||cp$1$target/$1
}
#提示输入要copy的命令,quit可以退出
read-p"Plzenteracommand(quitforquiting):"binary
#循环copy命令,遇到quit字符推出循环
until[$binary=="quit"];do
#调用命令copy函数
cmndcopy$binary
#保存命令copy函数返回值
retval=$?
#如果返回值等于0,则
if[$retval-eq0];then
#获取命令库文件的路径
binary=$(which--skip-alias$binary)
#循环取出库文件路径
forlibin$(ldd$binary|grep-o"/[^[:space:]]*lib[^[:space:]]*");do
#调用库文件copy函数
libcopy$lib
done
#如果返回值不为0,则
else
#提示命令输入错误,并可以重新输入
read-p"$binaryisnotcorrect,Plzenteragain(quitforquiting):"binary
#并提前结束本轮循环
continue
fi
#再次提示输入要copy的命令,quit可以退出
read-p"Plzenteracommand(quitforquiting):"binary
done
原文链接:https://www.f2er.com/bash/392990.html