yanfangsheng123 发表于 2018-8-30 06:55:19

Linux Shell编程之三函数

#!/bin/bash  
# description: 将一个外部命令本身和它所依赖的库文件拷贝到指定路径下
  
# version:0.0
  
# date:2014-07-23
  
# author: Alex
  
# license: GPL
  

  
# 模拟根文件系统
  

  
ch_root="/mnt/sysroot"
  
[ ! -d $ch_root ] && mkdir $ch_root
  

  
bincopy() {
  if which $1 &>/dev/null; then
  # local 定义局部变量,它的作用域是本个函数,一般我们在这里尽量使用局部变量,而不使用全局变量
  local cmd_path=`which --skip-alias $1`
  local bin_dir=`dirname $cmd_path`
  [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
  [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}
  # 用 return 返回函数的状态值 是一个数字 0-255
  return 0
  else
  echo "Command not found."
  return 1
  fi
  
}
  

  
libcopy() {
  local lib_list=$(ldd `which --skip-alias $1` | grep -Eo '/[^[:space:]]+')
  for loop in $lib_list;do
  local lib_dir=`dirname $loop`
  [ -d ${ch_root}${lib_dir} ] || mkdir -p${ch_root}${lib_dir}
  [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}
  done
  
}
  

  

  
read -p "Please input a command: " command
  

  
while [ "$command" != "quit" ];do
  if bincopy $command ;then
  libcopy $command
  fi
  read -p "Please input a command: " command
  
done


页: [1]
查看完整版本: Linux Shell编程之三函数