开发者社区> 余二五> 正文

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,如需转载请自行联系原作者

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

相关文章
Linux从入门到精通(十二)——shell编程 下
Linux从入门到精通(十二)——shell编程 下
26 0
Linux从入门到精通(十二)——shell编程 中
Linux从入门到精通(十二)——shell编程 中
24 0
Linux从入门到精通(十二)——shell编程 上
Linux从入门到精通(十二)——shell编程 上
30 0
Linux 常用命令(文件传输、网络通讯、软件包下载与安装、Shell 脚本编程常用命令)大全(三)
Linux 常用命令(文件传输、网络通讯、软件包下载与安装、Shell 脚本编程常用命令)大全(三)
44 0
Linux脚本(shell)详解
Linux脚本(shell)详解
45 0
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示(三)
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示
53 0
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示(二)
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示
56 0
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示(一)
【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示
22 0
【Linux】进程程序替换及shell的模拟实现(下)
【Linux】进程程序替换及shell的模拟实现(下)
29 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Shell 脚本速查手册
立即下载
Decian GNU/Linux安全合规之路
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载