shell进阶函数
函数的定义和用途
函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程。
函数和shell程序的异同点
它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部分
区别:
1.shell程序会启动一个子shell来执行
2.函数会在当前shell中运行,因此在当前shell中,函数可以对shell中的变量进行修改 ( 函数的有效范围是在当前shell )
函数的优先级高于内部命令,外部命令,别名. 函数名称如果和以上三种名称冲突,优先函数执行.
删除函数 执行unset functionname
调用函数 functioname 调用时候不要添加()
全局函数 export -f functioname
匿名函数 cmd1 || { cmd2; cmd3; } 后面的 { } 相当于匿名函数
多个脚本中复用函数
source functions(functions表示包含很多个函数的脚本文件) 或者 . functions
source /etc/rc.d/init.d/functions
函数变量类型
1.全局(环境)变量 export
当前shell和子shell有效
2.局部变量(普通变量)
只在当前shell进程有效,为执行脚本会启动专用子shell进程; 因此,本地变量的作用范围是当前shell脚本程序文件,包括脚本中的函数
3.本地变量 local
函数的生命周期;函数结束时变量被自动销毁
declare num 在函数中使用的话 相当于declare local num 会自带local的特性 declare -g num 声明为局部变量
如果函数中有局部变量,如果其名称同本地变量相同,使用局部变量
函数参数
传递参数给函数:调用函数时,在函数名后面以空白分隔给定参数列表即可;如“testfunc arg1 arg2 ...”
在函数体中当中,可使用$1, $2, ...调用这些参数;还可以使用$@, $*, $# 等特殊变量
函数返回值
return 退出函数本身 或者 return 100; 函数的返回值必须是一个数字 return 只能在函数中使用
$? 获取函数的返回值
函数有两种返回值:
函数的执行结果返回值:
(1) 使用echo等命令进行输出
(2) 函数体中调用命令的输出结果
函数的退出状态码:
(1) 默认取决于函数中执行的最后一条命令的退出状态码
(2) 自定义退出状态码,其格式为:
return 从函数中返回,用最后状态命令决定返回值
return 0 无错误返回
return 1-255 有错误返回
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun1(){ return ;}
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun1
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $? [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun2(){ return "aaa"; }
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun2
-bash: return: aaa: numeric argument required
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $? [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun3() { echo ; }
[root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun3 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $?
shell进阶函数的更多相关文章
- linux shell 进阶篇、shell脚本编程-创建函数
使用函数 #!/bin/bash # testing the script function myfun { echo "This is an example of a function&q ...
- Linux操作系统shell与函数详解
shell和函数的定义 1. linux shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell 函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...
- shell 中函数放回字符串问题
shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...
- shell从函数文件里调用函数
碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- Linux shell 自定义函数
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- shell脚本--函数
shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号 创建并使用函数 #!/bin/bash #文件名 ...
- shell获取函数的返回值
背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的. 定义一个函数 functionname(){ 操作内容 ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
随机推荐
- PHP_CodeSniffer HG 服务端部署篇
环境:CentOs 6.7 语言:PHP5.4 PHP_CodeSniffer: https://github.com/phpdragon/PHP_CodeSniffer 本地代码检测请查看该文章:h ...
- Nginx-配置一个简单的http虚拟服务
配置文件内容如下: #user nobody; worker_processes 4; #工作进程的个数,可以配置多个,一般配置成CPU的核数 pid logs/nginx.pid; # 此文件用于记 ...
- Orleans学习总结(二)--创建工程
通过第一篇Orleans学习总结(一)--入门认识我们大致知道知道是干嘛的了,下面我们来动手造一个传说中的神秘的高并发集群Orleans程序. 一.创建四个C#工程 1.IGrain工程,用来定义各种 ...
- Phoenix系列:二级索引(2)
上一篇介绍了Phoenix基于HBase的二级索引的基本知识,这一篇介绍一下和索引相关的一致性和优化相关内容. 一致性的保证 Phoenix客户端在成功提交一个操作并且得到成功响应后,就代表你所做的操 ...
- 7.11js的总结
<!DOCTYPE html> <html> <head> <title>js的内置全局函数</title> <script type ...
- 一次项目实践中DBCP数据库连接池性能优化
关于数据库连接池DBCP的关注源于刚刚结束的一轮测试,测试内容是衡量某Webserver服务创建用户接口的性能.这是一款典型的tomcat应用,使用的测试工具是Grinder.DBCP作为tomcat ...
- hadoop 使用ip配置导致hdfs启动失败
dataNode 有守护进行,但hdfs web页面上显示没有live node. 错误日志: 2017-06-21 17:44:59,513 ERROR org.apache.hadoop.hdfs ...
- 【Vue】---编写Vue插件流程---【巷子】
一.在Vue中编写插件流程 1.创建组件 components/message.vue <template> <div class="message" v-if= ...
- 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分
老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/guobaoyuan/ 开哥blog: https://home.cnblogs.com/u ...
- [No0000C2]WPF 数据绑定的调试
)DataBinding的表达式无效时,跟踪Debug的输出信息来查找原因(2)DataBinding的表达式有效,但是数据和期望值不同,此时可以在Converter中断点调试 :在VS输出窗口跟踪信 ...