Linux命令与shell脚本编程学习笔记-16创建函数

原创 2016年08月28日 17:16:42

16章 创建函数

16.1 基本的脚本函数

创建函数

#用function关键字
function name{
    commands
}
#函数名字后跟圆括号
name(){
    commands
}
function func1{
    echo “it is a example”
}

count=1
while [$count -le 5]
do
    func1
    ++count;
done
echo "total $count example"

函数要在被使用前被定义

16.2 返回值

bash shell会把函数当成小型脚本,运行结束会返回一个退出状态码
用$?可以得到退出状态码

bash shell使用return命令来退出函数并返回特定的退出状态码

使用函数输出
可以将函数的输出保存到变量中,例如:
result=`f1`
bash shell不会将read读取输入的部分作为 STDOUT

16.3 在函数中使用变量

向函数传递参数
在脚本中指定函数时,必须将参数和函数放在同一行
然后函数可以用参数环境变量来获得参数值
value=`func1 10 15 18`
在func1函数中,通过使用$1 $2 获得传入的参数

在函数中处理变量
函数会用到全局变量和局部变量。
全局变量
在脚本中定义的所有变量均为全局变量。在函数外定义的变量可在函数内正常访问

局部变量
函数内部任何变量都可以声明为局部变量,只需在变量前加local关键字即可。
在脚本中定义的局部变量,函数中是无法访问的。

16.4 数组变量和函数

向函数传递数组参数
需要将数组变量的值分解成单个值,然后作为函数参数使用。
在函数内部,可以将他们再组成一个数组。如果试图将数组看成一个参数传递给函数,那么函数只会读取数组变量的第一个值

从函数返回数组

#!/bin/bash  
fun(){  
    local array=(a b c d)  
    echo ${array[*]}  
}  

array=(`fun`)  
echo ${array[2]} 

16.5 函数递归

#!/bin/bash  
fun(){  
    local result=1;  
    if [ $1 -eq 1 ]  
    then  
        echo 1  
    else  
        result=$[$1 * `fun $[$1 - 1]`]  
        echo $result  
    fi  
}  

fun $1  

16.6 创建库
bash shell 允许创建函数库文件,然后在需要时在多个脚本中引用该文件

myfuncs文件

#!/bin/bash
function addem{
    echo $[$1+$2]
}

source命令可以在当前的shell上下文中执行命令,而不是创建一个新的shell来执行命令。可以用source命令来在shell脚本中运行库文件脚本。
source命令等同于点操作符(dot operator)

#!/bin/bash
. ./myfuncs
result=`addem 10 15`

16.7 在命令行上使用函数
1 在一行内定义整个函数
2 用多行定义函数,不用在每条命令后面加上分号,使用回车就可以了

在.bashrc文件中定义函数
在命令行中直接定义函数,在退出shell后,函数就会消失。可以在每次启动新shell都会加载的地方定义函数。
可以通过直接在这个文件中定义函数,也可以将已有的库文件中的函数添加到.bashrc脚本中。使用source方法加入库文件的路径

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux命令行与Shell脚本编程大全

  • l19901072010
  • l19901072010
  • 2016年11月19日 03:33
  • 445

《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记

第一章:初识Linux shell Linux内核负责以下4个主要功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 1.系统内存管理 内核不仅管理服务器上的可用物理内...
  • su1216
  • su1216
  • 2012年11月22日 21:50
  • 11764

《linux命令行与shell脚本编程大全》第三版 - 核心笔记(1/4):理解shell与linux命令

《linux命令行与shell脚本编程大全》 全书4部分: ☆ 【1】linux命令行(1-10章) ☆ 【2】shell脚本编程基础(11-16章) ☆ 【3】高级shell脚本编程(17-23章)...
  • sinat_36184075
  • sinat_36184075
  • 2017年06月11日 00:31
  • 467

《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):正则表达式

《linux命令行与shell脚本编程大全》 全书4部分: ☆ 【1】linux命令行(1-10章) ☆ 【2】shell脚本编程基础(11-16章) ☆ 【3】高级shell脚本编程(17-...
  • sinat_36184075
  • sinat_36184075
  • 2017年07月09日 21:10
  • 294

Linux命令行与Shell脚本编程大全读书笔记

Linux内核4大主要功能: 内存管理 进程管理 设备管理 文件系统管理 Linux系统启动的进程和脚本管理 1./etc/inittab   管理系统开机时会自动启动的进程 2....
  • lh2016rocky
  • lh2016rocky
  • 2017年04月27日 09:16
  • 570

《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):sed和gawk

《linux命令行与shell脚本编程大全》 全书4部分: ☆ 【1】linux命令行(1-10章) ☆ 【2】shell脚本编程基础(11-16章) ☆ 【3】高级shell脚本编程(17-...
  • sinat_36184075
  • sinat_36184075
  • 2017年07月02日 20:44
  • 713

《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程。全书分为四部分:第一部分介绍Lin...
  • cf406061841
  • cf406061841
  • 2017年05月16日 17:02
  • 482

smali学习笔记

0x1 smali概述   Dalvik 虚拟机 (Dalvik VM) 是 Google 专门为 Android 平台设计的一套虚拟机.区别于标准 Java 虚拟机 JVM 的 class 文件格式...
  • py_panyu
  • py_panyu
  • 2015年06月09日 15:48
  • 861

《Linux命令行与shell脚本编程大全》

纯草稿,只是为了以后整理 第一章 系统内存管理:内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间。 换出 换入 cat /proc/meminfo 共享内...
  • ZeroCBoy
  • ZeroCBoy
  • 2016年05月04日 14:32
  • 538

【Linux命令行与shell脚本编程】教程一——进入命令行界面

Linux shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分...
  • budf01
  • budf01
  • 2016年11月30日 11:00
  • 5589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux命令与shell脚本编程学习笔记-16创建函数
举报原因:
原因补充:

(最多只允许输入30个字)