bash函数
来源:互联网 发布:材料统计软件 编辑:程序博客网 时间:2024/06/05 04:04
在编程语言中,函数时一个很好使用调用。函数定义在一个文件中,我们可以不同的脚本中调用函数,这样节省了空间,而且工作效率也提升。
一、函数
1、概念
函数function是由若干个shell命令组成的语句块,实现代码重用和模块化编程。
2、文件
写函数文件时,与shell程序形式上相似,不同的是它不是一个单独的进程,不能单独运行,是shell的一部分。
3、函数和shell的区别
(1)shell程序在子shell中运行;(2)shell函数在当前的shell进程中运行,并且在当前shell中,函数可以对shell中变量进行修改。
4、函数格式
(1)function f_name(){ 函数体 }(2)f_name() { 函数体 }(3)function f_name { 函数体 }
注意:①f_name(){函数体}和②function f_name{函数体}两者是有区别的
在命令行定义函数时,如果定义别名和函数名相同时,②可以定义成功,而①会报错。命令行,别名比函数的优先级高。
示例:
二、函数的定义和使用
1交互式定义函数
示例:
定义该函数后,该函数一直保留至用户从系统退出,或执行unset F_name命令。
2函数放在脚本文件中作为它的一部分
#!/bin/bash# func1 hello(){echo "Hello there today's date is `date +%F`"}echo "now going to the function hello" helloecho "back from the function"
注意:函数必须在使用前定义。
3在只包含函数的单独文件中
可以将函数写入到文件中,将此文件载入shell脚本中即可。 一旦函数文件载入shell,可以在命令行或脚本中调用函数。可以使用set命令查看所有定义的函数,其输出列表包括已经载入shell的所有函数。
注意:如果要更改函数,首先用unset命令从shell中删除函数。更改完成后再载入到文件中。
创建好函数文件如何载入? . filename或source filename 先载入函数文件,再使用f_name调用函数。
注意:<点><空格><文件名>这里的文件名必须要是正确路径。
函数的生命周期:被调用时创建,返回时终止。
注意:函数只有被调用时才能被执行。函数名出现的地方会被替换为函数代码。
三、函数返回值
函数有两种返回值:
1、函数执行结果返回值
(1)使用echo等命令进行输出;(2)函数体中调用命令的输出结果;
2、函数的退出状态码
(1)默认取决于函数中执行的最后一条命令的退出状态码;(2)自定义退出状态码 return 从函数中返回,用最后执行命令决定返回值; return 0 无错误返回;return 1-255有错误返回return与exit的区别: return不退出脚本,exit退出脚本。
3、环境函数
功能:使其子进程也可用声明:export -f function_name或declare -xf function_name查看函数:export -f或declare -f
四、函数参数
函数可以接受参数
传递参数给函数:调用函数时,在函数后面以空白分隔给定参数列表即可;例如:testfunc arg1 arg2 在函数体中,可使用$1,$2,$3...调用这些参数,还可以使用$@,$#,$*。
五、函数变量
环境变量:对当前shell及其子shell有效;本地变量:只在当前shell进程有效,为执行脚本会启动专用的shell进程;因此,本地变量的作用范围是当前shell脚本程序文件,包括脚本中的函数局部变量。局部变量:函数的生命周期。
注意:如果函数中有局部变量,如果其名称同本地变量,使用局部变量。
定义函数中局部变量的方法: local NAME=value declare -i相当于定义本地变量local declare -ig 相当于环境变量 函数递归 函数直接或间接调用自身。函数调用有极限。
六、fork炸弹
fork炸弹是一个恶意程序,它的工作原理是fork进程无限循环。实质是一个简单的递归程序。由于程序是递归,如果没有任何限制,导致这个简单程序迅速消耗系统里面的资源。 格式::(){:|:&};: bomb(){bomb|bomb&};bomb 脚本实现: cat Bomb.sh #!/bin/bash # ./$*|./$0&
阅读全文
0 0
- bash 函数
- bash函数
- Bash 中的递归函数
- Bash 中的递归函数
- Bash 中的递归函数
- Bash 中的递归函数
- Bash 中的递归函数
- Bash Shell 函数
- bash之nl函数
- bash字符串常用函数
- bash shell 函数
- 【Bash百宝箱】shell函数
- bash编程之 函数
- linux bash 函数
- Bash 测试和比较函数
- Bash 测试和比较函数
- bash 脚本编程九 函数
- Bash 内置函数及其它
- 【朋友难过时,别安慰!安慰,其实…
- JAVA设计模式(十三)----责任链模式
- SIP协议中Tag和Branch的概念
- 【你所见的只是冰山一角】根据女童…
- UVa 11300 Spreading the wealth
- bash函数
- 【爱你的人自然会陪著你,不爱的走…
- 【别因为爱太久,就变了。幸福是珍…
- 【单身又如何?至少我过得很好!】…
- 【生活好累!教育真的对我有帮助吗…
- GCD---关于iOS多线程
- 【地震发生时在家最常犯的7个错误&…
- 字符串进制之间的转化
- 【帮助孩子成功 先培养8种生活态…