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/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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
存储 Linux
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
201 26
|
1月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
2月前
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
68 17
|
2月前
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
67 26
|
4月前
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
184 19
|
4月前
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
150 18
|
4月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
194 13
|
5月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
6月前
|
Shell Linux C语言
Shell 函数
10月更文挑战第4天
45 7
|
6月前
|
Shell
Shell编程(下)
Shell编程(下)
140 1
下一篇
oss创建bucket