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,如需转载请自行联系原作者
相关文章
|
9天前
|
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
65 25
|
6天前
|
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
37 18
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
3月前
|
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
158 32
|
3月前
|
linux中的目录操作函数
本文详细介绍了Linux系统编程中常用的目录操作函数,包括创建目录、删除目录、读取目录内容、遍历目录树以及获取和修改目录属性。这些函数是进行文件系统操作的基础,通过示例代码展示了其具体用法。希望本文能帮助您更好地理解和应用这些目录操作函数,提高系统编程的效率和能力。
206 26
|
3月前
|
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
70 17
|
3月前
|
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
71 26
|
5月前
|
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
195 19
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
158 18
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
202 13