开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux Shell编程之三函数

简介:
+关注继续查看

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


一、函数的相关知识

    函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用。这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像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/nullthen
    # 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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
shell编程和部分linux高级指令
shell编程和部分linux高级指令
0 0
Python编程:sh模块执行shell命令
Python编程:sh模块执行shell命令
0 0
关于Linux SHELL 的编程的几个练习(课本182页5-10题)
关于Linux SHELL 的编程的几个练习(课本182页5-10题)
0 0
[oeasy]python0035_ 整合shell编程_循环_延迟_清屏
[oeasy]python0035_ 整合shell编程_循环_延迟_清屏
0 0
Linux:shell编程2(内含:1.设置环境变量+2.位置参数变量+3.预定义变量+运算符+4.条件判断)
Linux:shell编程2(内含:1.设置环境变量+2.位置参数变量+3.预定义变量+运算符+4.条件判断)
0 0
Linux:shell编程1(内含:1.shell简介+2.shell实操+3.shell的变量介绍+4.shell变量的定义)
Linux:shell编程1(内含:1.shell简介+2.shell实操+3.shell的变量介绍+4.shell变量的定义)
0 0
shell编程之正则表达式(下)
前言 1、通配符回顾 通配符:linux命令中可使用通配符替代或者识别某一些文件名。
0 0
shell编程之正则表达式(上)
前言 1、通配符回顾 通配符:linux命令中可使用通配符替代或者识别某一些文件名。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Shell 脚本速查手册
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
从Linux系统内核层面来解决实际问题的实战经验
立即下载