Shell编程基础教程6--shell函数
6.shell函数
6.1.定义函数
简介:
shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数
定义函数的格式
方法一
函数名()
{
命令1
......
}
方法二
function 函数名()
{
命令1
......
}
函数定义的两种方式
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中
例子,在一个单独文件中只定义以下函数:
#!/bin/bash
#hellofun
function hello()
{
echo "Hello, today is `date`"
#`date` date用反引号括起来,表示在这条语句中先执行date命令,并将date命令的结果作为替换date位置的字符串
return 1
}
6.2.函数调用
例子
#!/bin/bash
#func
function hello()
{
echo "Hello,today is `date`"
}
echo "now going to the fuction hello"
#接下来就是调用函数hello
hello
echo "back from the function hello"
6.3.参数传递
简介
向函数传递参数就像在脚本中使用位置变量 $1、$2、...$9
例子
#!/bin/bash
#func
function hello()
{
echo "Hello, $1 today is `date`"
}
echo "now going to the fuction hello"
#接下来就是调用函数hello,传入参数 china
hello china
echo "back from the function hello"
6.4.函数文件
简介:
可以将函数定义和函数调用放在同一个文件中,也可以在一个文件中专门定义函数,在其他文件来调用该函数
例子:
在文件 hellofun 中定义函数
#!/bin/bash
function hello()
{
echo "Hello, today is `date`"
return 1
}
在另一个文件 func 中调用该函数
#!/bin/bash
#载入文件,标明定义函数的文件,格式为:.空格文件名(特别注意一定要在.和文件名之间有空格)
. hellofun
echo "now going to the fuction hello"
hello
echo "back from the function hello"
建议:
学习shell脚本的时候,可以多看看linux系统的启动文件来学习,但是注意在看的过程中,如果想要对它进行修改,一定要首先备份一下这个文件,在对其进行修改,以便能在出错时使用备份文件挽回
6.5.载入和删除函数
检查载入函数和删除函数
查看载入函数
set命令查看这个函数如何载入
例子:
#!/bin/bash
. hellofun
set
echo "now going to the fuction hello"
hello
echo "back from the function hello"
删除函数
unset命令
例子
#!/bin/bash
. hellofun
set
#使用unset使得接下来执行hello时候不能执行成功,因为unset删除了函数
unset hello
echo "now going to the fuction hello"
hello
#这里会输出信息:./func:hello:command not found
echo "back from the function hello"
6.6.函数返回状态值
例子1:
#!/bin/bash
function hello()
{
echo "Hello, today is `date`"
return 0
}
echo "now going to the function hello"
hello
#接下来来输出返回状态值,用 $? 表示
echo $?
echo "back from the function hello"
例子2:
#!/bin/bash
function hello()
{
echo "Hello, today is `date`"
return 0
}
echo "now going to the function hello"
returnvalue=hello
#接下来来输出返回状态值,用 $? 表示
echo $?
echo $returnvalue
echo "back from the function hello"
#注意:不同于C语言等语言,shell脚本中不能将函数的返回值赋给变量
#returnvalue=hello 不是将hello函数的返回值赋给returnvalue,而是将hello字符串赋给returnvalue
Shell编程基础教程6--shell函数的更多相关文章
- 【shell编程基础1】shell变量篇
Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...
- Shell编程基础教程2--变量和运算符
2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...
- Shell编程基础教程5--文本过滤、正则表达式、相关命令
5.文本过滤.正则表达式.相关命令 5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令) 简介: 一种用来描述文本模式的特殊语法 ...
- Shell编程基础教程4--控制流结构
4.控制流结构 4.1.控制结构 4.2.if then else语句 格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...
- Shell编程基础教程3--Shell输入与输出
3.Shell输入与输出 3.1.echo echo命令可以显示文本行或变量,或者把字符串输出到文件 echo [option] string ...
- Shell编程基础教程1--Shell简介
1.Shell简介 1.1.查看你系统shell信息 cat /etc/shell 命令可以获取Linux系统里面有多少种shell程序 echo $SHELL 命令可以查看当前你所使用的shell是 ...
- Shell编程基础教程7--脚本参数的传递
7.脚本参数的传递 7.1.shift命令 简介: shift n 每次将参数位置向左偏移n位 例子 #!/bin/bash us ...
- 【shell编程基础2】shell组合应用之一:重定向和逻辑
这篇主要讲下 数据的重定向,在shell脚本中有些重要的输出重定向为文件的形式输出来 逻辑方式的多个命令组合,可以很方便的进行一些判断 数据流重定向 数据流重定向:大致上的意思就是本该输出到屏幕上的数 ...
- 【shell编程基础3】shell编程的组合应用之二:管道及其命令
预备知识: 管道:它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据. 它的符号是 "|" 管道只能处理经过前面一个命令传过 ...
随机推荐
- caffe学习系列(6):其他层介绍
主要包括softmax-loss层(与softmax有区别),全连接层(Inner Prouduct),accuracy层,reshape层, Dropout层. softmax: layers { ...
- [RouterOS] ROS对接碧海威或PA等流控实现完美流控详细教程(附脚本全免费)
前言: 经常在群里看到不少朋友争论海蜘蛛 ROS 维盟 爱快 碧海威 流控大师 Woyos等等软路由,哪个好.实际上,网络产品是复杂的,现在的软路由功能上已经远远不是单独的路由了.每种产品都有他本身的 ...
- BZOJ 1041
题目描述 给出\(n\),求\(x^2+y^2=n^2,x,y,z\in \mathbb{Z}\)的解数. 复杂度 \(O\left(T_{\mathtt{factorization}}(n)\rig ...
- svn update错误
可以再checkout下来一份项目,重新命名,然后将该项目下的隐藏文件夹.svn替换掉原项目 注意备份
- Calico在Docker中的搭建
一,Multi-host网络需求 开始之前推荐两篇文章 http://xelatex.github.io/2015/11/15/Battlefield-Calico-Flannel-Weave-and ...
- Spring Boot+AngularJS中因为跨域导致Session丢失
http://blog.csdn.net/dalangzhonghangxing/article/details/52446821 如果还在为跨域问题烦恼,请查看博主的 解决angular+sprin ...
- C#中 int.TryParse 的用法
int i = -1;bool b = int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记. int i = -1;bool b = in ...
- ACL
http://man.chinaunix.net/linux/debian/debian_learning/ch01s04.html http://blog.csdn.net/xiangliangyu ...
- Google Code Jam 2015 R1C B
题意:给出一个键盘,按键都是大写字母.给出一个目标单词和一个长度L.最大值或者最大长度都是100.现在随机按键盘,每个按键的概率相同. 敲击出一个长度为L的序列.求该序列中目标单词最多可能出现几次,期 ...
- Storm集群的安装配置
Storm集群的安装分为以下几步: 1.首先保证Zookeeper集群服务的正常运行以及必要组件的正确安装 2.释放压缩包 3.修改storm.yaml添加集群配置信息 4.使用storm脚本启动相应 ...