Shell脚本高级编程笔记一
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脚本高级编程笔记一的更多相关文章
- 一、Shell脚本高级编程实战第一部
Shell脚本语言是实现linux系统自动化管理的重要且必要的工具,几乎每一个合格的linux系统管理员或者高级运维工程师都要熟练shell脚本语言的编写,只有这样才能提升工作效率,解决工作中的重复劳 ...
- 四、Shell脚本高级编程实战第四部
一.比较两个数的大小 #!/bin/shread -p "Pls input two num:" a b[ -z "$a" ] || [ -z "$b ...
- 三、Shell脚本高级编程实战第三部
保养好自己的发动机:身体的和心里的身体健康:打打球,跑跑步心里健康:多和大家接触,保持家人.朋友的良好关系一.$*和$@的区别 $*:获取shell的所有参数,将所有的参数视为单个字符串. $ ...
- 二、Shell脚本高级编程实战第二部
一.什么是变量? 变量就是一个固定的字符串替代更多更复杂的内容,当然内容里面可能还有变量.路径.字符串等等内容,最大的特点就是方便,更好开展工作 1.变量有环境变量(全局变量)和局部变量 环境变量就是 ...
- 九、Shell脚本高级编程实战第九部
一.监控mysql主从同步是否异常,如果异常,发送短信给管理员 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果错误号是:1158.1159.1008.1007.1062,请跳过 3)请使用数 ...
- 七、Shell脚本高级编程实战第七部
一.写网络服务的系统启动脚本 利用case语句开发类似系统启动rsync服务的脚本 代码: #!/bin/sah. /etc/init.d/functionspidfile="/var/ru ...
- 六、Shell脚本高级编程实战第六部
一.写一个start_nginx脚本,当启动.停止.重启时利用系统函数模拟实现系统脚本启动的特殊颜色效果 (用if实现) #!/bin/sh. /etc/init.d/functions if [ $ ...
- 八、Shell脚本高级编程实战第八部
一.使用for循环在/oldboy目录下创建10个文件名为oldboy-x的文件 #!/bin/sh[ ! -d /oldboy ] && mkdir -p /oldbfor i in ...
- 五、Shell脚本高级编程实战第五部
一.条件表达式 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作.有时也和if结合,让我们方便判断. test: 1)判断文件是否存在:test -f file 2) ...
随机推荐
- day8--socket文件传输
FTP server 1.读取文件名 2.检测文件是否存在 3.打开文件 4.检测文件大小(告诉客户端发送文件的大小) 5.发送文件大小和MD5值给客户端,MD5 6.等待客户端确认(防止粘包) 7. ...
- BZOJ1150 [CTSC2007]数据备份Backup 贪心 堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1150 题意概括 数轴上面有一堆数字. 取出两个数字的代价是他们的距离. 现在要取出k对数,(一个数 ...
- StringBuilder和+来串接字符串,时间的比较
一:程序比较 1.使用+ 2.使用的时间 虽然时间一直在变动,但是仍然可以看到时间在1000ms左右 3.使用StringBuilder 4.使用的时间 虽然时间每次在变化,但是时间在350ms左右变 ...
- Python打包方法——Pyinstaller (转)
Python版本:Python3.5.2 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后 ...
- Digital biquad filter
Direct Form 1 The most straightforward implementation is the Direct Form 1, which has the following ...
- 中间人攻击工具ettercap
中间人攻击工具ettercap (一).简介 (二).模块划分 1.Snifer 2.MITM 3.Filter 4.Log 5.Plugin (三).特性 (四).用户操作界面 (五).指定目标 ( ...
- html+css基础知识
这是自己学习html时候做的一些记录,供大家参考 <!-- 块和内联 块元素:独占一行的元素 div p h ul div没有任何语义,就是一个纯粹的快元素 就是为了方便布局 span是内联元素 ...
- 算法进阶面试题02——BFPRT算法、找出最大/小的K个数、双向队列、生成窗口最大值数组、最大值减最小值小于或等于num的子数组数量、介绍单调栈结构(找出临近的最大数)
第二课主要介绍第一课余下的BFPRT算法和第二课部分内容 1.BFPRT算法详解与应用 找到第K小或者第K大的数. 普通做法:先通过堆排序然后取,是n*logn的代价. // O(N*logK) pu ...
- c#操作数据库的增删改查语句及DataGridView简单使用
下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...
- Python解释数学系列——分位数Quantile
跳转到我的博客 1. 分位数计算案例与Python代码 案例1 Ex1: Given a data = [6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36],求Q1, ...