Linux命令与shell脚本编程学习笔记-16创建函数
来源:互联网 发布:羽原大魔王知乎 编辑:程序博客网 时间:2024/05/29 16:56
16章 创建函数
16.1 基本的脚本函数
创建函数
#用function关键字function name{ commands}#函数名字后跟圆括号name(){ commands}
function func1{ echo “it is a example”}count=1while [$count -le 5]do func1 ++count;doneecho "total $count example"
函数要在被使用前被定义
16.2 返回值
bash shell会把函数当成小型脚本,运行结束会返回一个退出状态码
用$?可以得到退出状态码
bash shell使用return命令来退出函数并返回特定的退出状态码
使用函数输出
可以将函数的输出保存到变量中,例如:
result=`f1`
bash shell不会将read读取输入的部分作为 STDOUT
16.3 在函数中使用变量
向函数传递参数
在脚本中指定函数时,必须将参数和函数放在同一行
然后函数可以用参数环境变量来获得参数值
value=`func1 10 15 18`
在func1函数中,通过使用$1 $2 获得传入的参数
在函数中处理变量
函数会用到全局变量和局部变量。
全局变量
在脚本中定义的所有变量均为全局变量。在函数外定义的变量可在函数内正常访问
局部变量
函数内部任何变量都可以声明为局部变量,只需在变量前加local关键字即可。
在脚本中定义的局部变量,函数中是无法访问的。
16.4 数组变量和函数
向函数传递数组参数
需要将数组变量的值分解成单个值,然后作为函数参数使用。
在函数内部,可以将他们再组成一个数组。如果试图将数组看成一个参数传递给函数,那么函数只会读取数组变量的第一个值
从函数返回数组
#!/bin/bash fun(){ local array=(a b c d) echo ${array[*]} } array=(`fun`) echo ${array[2]}
16.5 函数递归
#!/bin/bash fun(){ local result=1; if [ $1 -eq 1 ] then echo 1 else result=$[$1 * `fun $[$1 - 1]`] echo $result fi } fun $1
16.6 创建库
bash shell 允许创建函数库文件,然后在需要时在多个脚本中引用该文件
myfuncs文件
#!/bin/bashfunction addem{ echo $[$1+$2]}
source命令可以在当前的shell上下文中执行命令,而不是创建一个新的shell来执行命令。可以用source命令来在shell脚本中运行库文件脚本。
source命令等同于点操作符(dot operator)
#!/bin/bash. ./myfuncsresult=`addem 10 15`
16.7 在命令行上使用函数
1 在一行内定义整个函数
2 用多行定义函数,不用在每条命令后面加上分号,使用回车就可以了
在.bashrc文件中定义函数
在命令行中直接定义函数,在退出shell后,函数就会消失。可以在每次启动新shell都会加载的地方定义函数。
可以通过直接在这个文件中定义函数,也可以将已有的库文件中的函数添加到.bashrc脚本中。使用source方法加入库文件的路径
- Linux命令与shell脚本编程学习笔记-16创建函数
- linux命令行与shell脚本编程大全学习笔记之—shell脚本for命令学习
- Linux命令与shell编程学习-15章控制脚本
- 《Linux命令行与Shell脚本编程大全》学习笔记1
- 《Linux命令行与Shell脚本编程大全》学习笔记2
- 《Linux命令行与Shell脚本编程大全》学习笔记3
- 《Linux命令行与Shell脚本编程大全》学习笔记4
- Linux命令行与Shell脚本编程[学习笔记序]
- Linux命令行与Shell脚本编程[学习笔记1]
- Linux shell命令脚本学习笔记
- linux shell 脚本命令学习笔记
- Linux-Shell脚本编程-学习-8-函数
- Linux shell 脚本编程学习笔记(echo)
- 《Linux与shell脚本编程大全》笔记之shell命令补充
- 《Linux命令、编辑器与Shell编程》读书笔记12-函数和脚本
- Linux命令shell脚本编程学习笔记-18章初识sed和gawk
- linux shell 脚本,创建函数
- Linux-Shell脚本编程-学习-1-Linux基本命令
- CABAC基础一-二值化
- 【八皇后】问题
- JSP学习笔记---包含指令
- Mac下使用excel统计的几个坑
- RecyclerView 瞬间上手
- Linux命令与shell脚本编程学习笔记-16创建函数
- 快速获取网站页面
- python opencv 进行简单几何变换
- 移动端开发需要注意的一些事情
- JAVA 常用字符串用法
- 客户注册页--手机号验证--失败篇
- Overfencing_usaco2.4.2_bfs
- Q59:对称的二叉树
- Mysql MATCH() AGAINST() (MATCH+AGAINST)