函数是什么呢?我们为什么有使用函数呢?
一、函数的相关知识
函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用。这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像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
|
本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1528506,如需转载请自行联系原作者