61581229 发表于 2018-8-23 07:22:00

10月7号,shell脚本完善版

  不废话,代码如下
  


[*]#!/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
页: [1]
查看完整版本: 10月7号,shell脚本完善版