Linux Shell编程之三函数


     函数是什么呢?我们为什么有使用函数呢?


一、函数的相关知识

    函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用。这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像Java提供的许多类和方法(函数)一样;另一方面是为了代码的模块化编程,这样可以实现多人同时开发代码。

    在 shell 中函数主要的作用是实现代码复用,当然利用函数比编写代码可以是代码更简洁,易读。

    

    shell中如何定义函数?

语法格式:

    function F_NAME {

        函数体

    }

    或者

    F_NAME() {

        函数体

    }

二、函数示例

#!/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 $1`
		[ -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() {
	lib_list=$(ldd `which --skip-alias $1` | grep -Eo ‘/[^[:space:]]+‘)
	for loop in $lib_list;do
		local lib_dir=`dirname $loop`
		[ -b ${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

本文出自 “逆水寒” 博客,请务必保留此出处http://guoting.blog.51cto.com/8886857/1528506

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。