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]