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方法加入库文件的路径

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

Shell脚本编程基础 三 使用结构化命令

结构化命令允许我们改变程序执行的顺序,在某些条件下执行一些命令而在其他条件下跳过另一些命令。(1)使用if-then语句 结构化命令中,最基本的类型就是if-then语句,其格式如下: if com...

Shell脚本编程的常识

Shell脚本编程的常识 (这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                ...

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

第六章:理解Linux文件权限 root账户的UID通常是0 Linux系统会为各种各样的功能创建不同系统账户,这样即使攻占了某个服务,系统也不会沦陷 Linux为系统预留了500以下的UID值,...
  • su1216
  • su1216
  • 2012年12月17日 00:02
  • 3517

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

第二十四章:使用Web Lynx程序Lynx支持三种不同的查看Web页面真实HTML内容的格式:1.在终端会话中采用curses图形库的文本图形显示2.文本文件,从web页面中转储的原始数据3.文本文...
  • su1216
  • su1216
  • 2013年11月15日 16:34
  • 4178

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

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

《Linux命令行与Shell脚本编程大全》学习笔记2

0、下面是书本第四章的学习笔记,并且只记录那些,本人不知道的抑或遗忘的内容。      1、命令ps,Linux系统中使用的GNU ps命令支持3个不同类型的命令行参数:Unix风格的参数,...

Liunx 命令行与shell脚本编程大全 第八章学习笔记(Linux系统的包管理基础)

1、包管理基础

Linux命令行与Shell脚本编程[学习笔记1]

1、什么是Linux 1.1、Linux可划分为以下四部分: □  Linux内核; □  GNU工具组件; □  图形化桌面环境; □  应用软件。   Linux系统的基本结构框图: 1.2深入...

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

第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r...
  • su1216
  • su1216
  • 2012年11月26日 12:58
  • 4646

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

第十七章:图形化桌面上的脚本编程 创建文本菜单创建菜单布局#!/bin/bash clear #清屏 echo -e "\t\tMenu" echo -e "1.\tDisplay disk spac...
  • su1216
  • su1216
  • 2013年09月05日 20:35
  • 3407
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux命令与shell脚本编程学习笔记-16创建函数
举报原因:
原因补充:

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