本文共 1482 字,大约阅读时间需要 4 分钟。
函数是什么呢?我们为什么有使用函数呢?
一、函数的相关知识
函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用。这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像Java提供的许多类和方法(函数)一样;另一方面是为了代码的模块化编程,这样可以实现多人同时开发代码。
在 shell 中函数主要的作用是实现代码复用,当然利用函数比编写代码可以是代码更简洁,易读。
shell中如何定义函数?
语法格式:
function F_NAME {
函数体
}
或者
F_NAME() {
函数体
}
二、函数示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #!/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 |