10月7号,shell脚本完善版
2012-10-08 20:48
176 查看
不废话,代码如下
以上就是脚本内容,暂时没感觉有太大问题,测试都已通过了…个人感觉,如果您已经有命令,但是没有库文件,这个可能会不起作用…这个如果真需要的话,可以将下面的循环单独分离出来,再做个仅复制库文件的即可,或者,把跳转去掉和if稍微修改一下,即使命令存在,也依然进行遍历,也行…要预习课程了,不折腾了.
#!/bin/bash #Author: MOS #Script name: demo1.sh #Date & Time: 2012-10-08/18:59:09 #Version: 1.0.2 #Description: # [ ! -d /media/sysroot ] && echo "Error! No such /media/sysroot." && exit 1 #保证此目录存在,否则退出,上篇提到,这个是挂载微系统的根目录 CPC(){ #定义函数名 Cp='/media/sysroot' Rcom=${1:-passwd} #这个是测试默认值,用的passwd命令… if which $Rcom &> /dev/null ;then #如果命令是错误的,直接函数跳转2出去,如果正确,则执行如下 Res=`which $Rcom|grep -o "/.*bin.*"` #考虑到命令可能有别名,截取有效值 Path=`echo ${Res%/*}` #截取命令的路径,去除命令名 Com=`echo ${Res##*/}` #仅截取所需命令 [ -d $Cp$Path ] || mkdir -p $Cp$path #如果目标命令路径不存在,则创建 [ ! -f $Cp$Res ] && cp $Res $Cp$Res || return 3 #如果命令存在,则跳转3出去,没有则复制 else return 2 fi Lres=(`ldd $Res|grep -o "/.*lib.*"|cut -d" " -f1`) #截取命令库文件,赋值给数组Lres for i in ${Lres[*]}; do #遍历数组 [ -f $Cp$i ] && echo "have $Cp$i,cp next." && continue #如果此库文件已存在,则提示有,跳转到下次循环,若无,则执行如下 Lpath=`echo ${i%/*}` #截取库文件名字 [ -d $Cp$Lpath ] || mkdir -p $Cp$Lpath #检查若无目标目录,则创建 cp $i $Cp$i #复制库文件到目标目录 done } read -p "A Command": Command #读取输入命令 CPC $Command #将命令传给函数 Return=$? #获取函数跳转值 [ $Return -eq 2 ] && echo "Error!Invalid command --> $Command" && exit 2 #如果函数跳转值为2,则提示输入的命令无效,设置脚本退出状态为2 [ $Return -eq 3 ] && echo "$Command <---already exist!!" && exit 3 #如果函数跳转值为3,则提示输入的命令已存在,设置脚本退出状态为3
以上就是脚本内容,暂时没感觉有太大问题,测试都已通过了…个人感觉,如果您已经有命令,但是没有库文件,这个可能会不起作用…这个如果真需要的话,可以将下面的循环单独分离出来,再做个仅复制库文件的即可,或者,把跳转去掉和if稍微修改一下,即使命令存在,也依然进行遍历,也行…要预习课程了,不折腾了.
相关文章推荐
- shell脚本中嵌入二进制文件
- Linux系统初始化优化Shell脚本
- Shell脚本------解析elf文件及awk基本使用
- 关于一个简单的python上传到linux服务器再经过shell脚本ftp传输的问题
- Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
- shell 脚本
- shell脚本实战之编译mysql
- Linux shell脚本 (三)Shell特殊变量
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- 常用的主机监控Shell脚本
- shell脚本与命定
- linux中shell脚本设置环境变量
- shell 脚本 if then else fi
- SHELL脚本之BASH基础
- shell安装脚本
- 递归目录的shell脚本
- Shell脚本调试技术
- 日常潜水-20160930-Mac执行shell脚本报错_command not found
- SHELL脚本自动部署KVM虚拟化
- shell脚本——比较两个文件大小、权限