linux学习之shell脚本 ------- shell函数
2015-02-02 00:02
351 查看
[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]
今天来看一下Shell的函数。
函数定义格式:
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。
如下面的脚本就是一个只包含函数的单独文件。
既然定义的函数,那么如何调用该函数呢,下面,我们接着看函数调用。
我们修改上面的例子:
还是一样,我们以例子来说明,先定义一个函数文件,修改上个脚本为函数文件,如下
fun_test.sh
funfilecall.sh
set
删除函数
unset
我们修改上面的脚本如下:
另外,$?可以取得一个命令的返回值,一般情况,当命令执行成功时,返回0,执行不成功时返回非0整数。对于函数也类似,可以通过$?取得函数的返回值。
今天来看一下Shell的函数。
Shell函数
函数定义
shell允许将一组命令集或语句形成一个可用块,这些块称为Shell函数。函数定义格式:
函数名(){ 命令1 …… } 或 function 函数名(){ …… }
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。
如下面的脚本就是一个只包含函数的单独文件。
#!/bin/bash #fun_test function hello(){ echo "Hello,today is `date`" return 1 }
既然定义的函数,那么如何调用该函数呢,下面,我们接着看函数调用。
函数调用
以上面定义的函数为例,调用方式如下:#!/bin/bash #fun_test function hello(){ echo "Hello,today is `date`" return 1 }echo "now going the function hello"可以看出,其实和其他语言一样,在主程序中直接用函数名,就可以调用定义好的函数了,我们看下,该脚本的执行结果:
hello
echo "back from the function"
jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ chmod a+rx fun_test.sh jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./fun_test.sh now going the function hello Hello,today is 2015年 02月 01日 星期日 20:22:36 CST back from the function
参数传递
向函数传递参数就像是在脚本中使用位置变量一样,$1,...,$9我们修改上面的例子:
#!/bin/bash #fun_test function hello(){ echo "Hello,$1 today is `date`" return 1 } echo "now going the function hello" hello jesson echo "back from the function"这里,是以位置变量使用参数,执行如下:
jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./fun_test.sh now going the function hello Hello,jesson today is 2015年 02月 01日 星期日 20:28:38 CST back from the function
函数文件
在上面函数定义里也提到了,函数可以单独作为一个文件,那这个文件即称为函数文件,那么就有一个问题了,上面的例子,都是在同一个文件内,也就是函数与函数的调用都在同一个主程序中,那么对于函数文件,该如何调用呢。还是一样,我们以例子来说明,先定义一个函数文件,修改上个脚本为函数文件,如下
fun_test.sh
#!/bin/bash #fun_test function hello(){ echo "Hello,$1 today is `date`" return 1 }这里,我们定义了函数文件,我们现在要在另一个脚本里调用该函数文件,该如何做呢????
funfilecall.sh
#!/bin/bash #funfilecall #Source function . fun_test.sh echo "now going to the function hello" hello jesson echo "back from the function"可以看出,对于函数文件的调用,只需要两步就可实现,第一步就是在调用函数前,先申明函数文件,方法( . 函数文件名),这里要注意,.与函数文件名之间要有空格。接下下,就可以直接调用函数文件里定义的函数了,与之前在同一个文件中调用函数一样。该脚本执行结果如下:
jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./funfilecall.sh now going to the function hello Hello,jesson today is 2015年 02月 01日 星期日 20:37:55 CST back from the function
检查载入函数和删除函数
查看载入函数:set
删除函数
unset
我们修改上面的脚本如下:
#!/bin/bash #funfilecall #Source function . fun_test.sh set unset hello echo "now going to the function hello" hello jesson echo "back from the function"执行结果如下:
...... now going to the function hello ./funfilecall.sh: 行 8: hello: 未找到命令 back from the function可以,在脚本中有unset hello,这句的意思是将hello删除,也就是不载入,所以执行结果中才会提示,hello:未找到命令。
另外,$?可以取得一个命令的返回值,一般情况,当命令执行成功时,返回0,执行不成功时返回非0整数。对于函数也类似,可以通过$?取得函数的返回值。
相关文章推荐
- Linux学习之学习shell脚本
- linux 基础学习之四:shell脚本学习(1)
- Linux-Shell脚本学习心得(第二天)
- Linux shell脚本全面学习
- linux学习之路之shell脚本实例
- Linux学习心得:细细品味shell脚本中的细节与用户体验 ^_^
- 脚本学习python和linux-shell和jQuery(javascript)
- Linux-Shell脚本学习心得之批量创建、删除用户
- Linux-Shell脚本学习心得(若干天后)
- [Linux学习]Shell脚本(1)--函数,输入,if判断(持续更新)+删除空行 +保存当前路径
- linux基础学习-shell脚本学习(鸟哥私房菜)
- Shell脚本编程学习入门 02 分类: arm-linux-Ubuntu 2013-08-30 17:45 427人阅读 评论(0) 收藏
- Linux系统Shell脚本的入门学习
- linux学习(六) shell脚本(3)
- 一本不错的Linux/Unix Shell脚本学习教程
- Linux学习(九)-----shell脚本学习 条件判断和循环
- Shell脚本初步学习-鸟哥Linux私房菜基础学习篇
- Shell脚本编程学习入门 01 分类: arm-linux-Ubuntu 2013-08-30 17:42 409人阅读 评论(0) 收藏
- Linux命令-学习shell脚本之前的基础知识
- [Linux]第三部分-学习Shell和Shell脚本