http://www.cnblogs.com/ygj0930/p/8184277.html

一:函数

1:创建函数

法一:
function name{
commands
} 法二:
name() {
commands
}

2:函数的使用

通过函数名来调用函数,需要注意的是:函数需要先定义,再调用。不然的话会报错。

3:函数返回值

函数运行结束时会返回值,有三种方法为函数生成返回值:

1)默认退出状态码

默认情况下,函数的最后一条命令的执行结果状态 就是函数的退出状态码,如果最后一条命令执行成功,则返回0,否则,返回一个正数。

2)使用return(只能返回整数)

return命令用于退出函数并且返回一个状态码,状态码必须是0~255之间的整数

3)使用echo输出

在函数中输出内容,在调用函数处接收内容,可以输出任何类型的数据

result=$(函数 参数...)

4:函数变量

1)向函数传递参数

函数相当于小脚本,所以向函数传参的方式与脚本传参类似。

传参:
函数名 参数1 参数2 ... 函数中调用参数:
$:函数名
$:第一个参数
$:第二个参数
......

2)向函数传递数组

如果把数组变量作为参数传递给函数,则函数只会取到数组的第一个元素。

向函数传递数组,需要将数组拆分成单个值,然后把这些值传递给数组。

func ${array[*]}

在函数中,则需要使用这些变量重新创建一个数组:

newArray=($(echo "$@"))

3)函数返回数组

在函数中使用echo语句输出数组的拆分值,然后在脚本中将他们重新包装成一个数组。

逐个返回数组值:echo ${newarray[*]}
重新包装:result=($(func arg...))

4)全局变量与局部变量

在函数外、脚本内定义的都是全局变量,函数外定义的全局变量可以在函数内访问。

在函数内定义的变量,只需使用local关键字修饰,即可声明成局部变量。

5:高级用法——创建函数库

如果某些函数需要在多个脚本文件中使用,那么可以将这些函数提取出来放进一个公用的的脚本文件中,这个脚本文件就是  库文件。

1)创建一个脚本文件,在其中定义公用的库函数

2)在其他脚本文件中,引入库脚本文件

#!/bin/bash
. 库文件路径 #引用库函数使用source命令,其别名是 点操作符。 使用库函数...

6:高级用法——在.bashrc中定义函数

如果需要每次启动一个shell时都能自动加载某函数,那么我们可以在.bashrc中定义函数或导入库函数。

1)定义函数

在主目录下的.bashrc文件中定义函数,写在文件末尾即可。

2)引入函数

在.bashrc文件的末尾,使用  . 库函数路径   引入即可。

Shell脚本高级编程笔记一的更多相关文章

  1. 一、Shell脚本高级编程实战第一部

    Shell脚本语言是实现linux系统自动化管理的重要且必要的工具,几乎每一个合格的linux系统管理员或者高级运维工程师都要熟练shell脚本语言的编写,只有这样才能提升工作效率,解决工作中的重复劳 ...

  2. 四、Shell脚本高级编程实战第四部

    一.比较两个数的大小 #!/bin/shread -p "Pls input two num:" a b[ -z "$a" ] || [ -z "$b ...

  3. 三、Shell脚本高级编程实战第三部

    保养好自己的发动机:身体的和心里的身体健康:打打球,跑跑步心里健康:多和大家接触,保持家人.朋友的良好关系一.$*和$@的区别   $*:获取shell的所有参数,将所有的参数视为单个字符串.   $ ...

  4. 二、Shell脚本高级编程实战第二部

    一.什么是变量? 变量就是一个固定的字符串替代更多更复杂的内容,当然内容里面可能还有变量.路径.字符串等等内容,最大的特点就是方便,更好开展工作 1.变量有环境变量(全局变量)和局部变量 环境变量就是 ...

  5. 九、Shell脚本高级编程实战第九部

    一.监控mysql主从同步是否异常,如果异常,发送短信给管理员 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果错误号是:1158.1159.1008.1007.1062,请跳过 3)请使用数 ...

  6. 七、Shell脚本高级编程实战第七部

    一.写网络服务的系统启动脚本 利用case语句开发类似系统启动rsync服务的脚本 代码: #!/bin/sah. /etc/init.d/functionspidfile="/var/ru ...

  7. 六、Shell脚本高级编程实战第六部

    一.写一个start_nginx脚本,当启动.停止.重启时利用系统函数模拟实现系统脚本启动的特殊颜色效果 (用if实现) #!/bin/sh. /etc/init.d/functions if [ $ ...

  8. 八、Shell脚本高级编程实战第八部

    一.使用for循环在/oldboy目录下创建10个文件名为oldboy-x的文件 #!/bin/sh[ ! -d /oldboy ] && mkdir -p /oldbfor i in ...

  9. 五、Shell脚本高级编程实战第五部

    一.条件表达式 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作.有时也和if结合,让我们方便判断. test: 1)判断文件是否存在:test -f  file 2) ...

随机推荐

  1. easyUI拖动购物车案例

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  2. python 全栈开发,Day59(小米商城)

    一.小米商城 准备工作: 访问iconfont,官网链接: http://www.iconfont.cn/ 登录之后,找到需要的图标 将图标下载到本地,解压,重命名为font创建几个空文件夹:css, ...

  3. ActiveMQ、RabbitMQ、RocketMQ、Kafka有什么优点和缺点

    ActiveMQ 单机吞吐量:万级 topic数量都吞吐量的影响: 时效性:ms级 可用性:高,基于主从架构实现高可用性 消息可靠性:有较低的概率丢失数据 功能支持:MQ领域的功能极其完备 总结: 非 ...

  4. CDQ分治求前缀和

    #include<bits/stdc++.h> using namespace std; ; int n,a_tot,q_tot,ans[N]; ]; struct query { int ...

  5. 075 importSTV的使用,与bulkload的使用

    一:由HDFS将数据直接导入到HBase中 1.生成TSV文件 2.内容 3.上传到HDFS 4.运行 export HBASE_HOME=/etc/opt/modules/hbase-0.98.6- ...

  6. java技术第二次作业

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载? 构造方法是用于对对象初始化的方法,当新对象被创建的时候,构造函数会被调用. 每一个类都有构造函数.在程序员没有给类提供构造函数的情况下,Ja ...

  7. Spring日记_01 之 Eclipse下的Tomcat服务器配置 以及 Springmvc和Servlet的使用

    安装Tomcat – window – preferences – Server                                                  右键Tomcat v ...

  8. P2789 直线交点数

    P2789 直线交点数分成两种情况,一种是平行直线,一种是自由直线,在自由直线中可以存在平行直线,但是不能和第一组的直线平行.自由直线和平行直线的交点是i*(n-i). #include<ios ...

  9. Ubuntu pkg_resources.DistributionNotFound: The 'Scrapy==1.0.3' distribution was not found and is required by the application

    在Ubuntu16.0.4上安装scrapy,参考:Ubuntu16.04安装Scrapy命令 都安装成功后,import scrapy也都没出错,但是在终端输入:scrapy 命令时出现错误: Fi ...

  10. 使用Future停止超时任务

    今天学了下多线程中超时任务的处理,这里和大家分享下,遇到了点问题没能解决,留下来希望大家帮我解疑啊. 在JAVA中停止线程的方法有多种,有一种是结合ExecutorService和Future的使用, ...