1、shell函数

1.1、shell函数定义

对于重复出现的代码,在shell中可以定义函数,然后在指定的地方调用即可。便于代码复用,提高开发效率。

定义函数的语法如下:

 function 函数名(){
语句块
返回值
}

示例:

 function hello(){
echo "Hello"
}

2、调用函数

通过函数名称来调用已定义的函数

 function_name

两个数相加的函数与定义:

 #定义函数add
function add(){
a=
b=
val=`expr ${a} + ${b}`
echo "${a} + ${b} is :${val}" }
#调用函数
add

输出:

  +  is :

1.3、带参数的函数

上面的add函数a,b的值已写死,可用性太差。下面传入参数来重写add函数

 #定义函数add
function add(){
#$1表示第一个参数
#$2表示第二个参数
#$n表示第n个参数
a=$
b=$
val=`expr ${a} + ${b}`
echo "${a} + ${b} is :${val}" }
#调用函数
add
add

输出:

  +  is :
+ is :

1.4、函数返回值

 #函数返回值不是必须的,与一般语言的返回值含义不同
#语法 return status_code,表示函数的退出状态
#退出状态是个数字,一般成功为0,失败为1
#$? 用来获取上一个命令的退出状态或返回值。
 #调用函数
add
echo "add func exit code is : $?"

输出:

 add func exit code is : 

假如把add函数执行成功的退出状态定义为200,重写add函数并判断是否执行成功

示例:

 #定义函数add
function add(){
#定义成功状态码
ok_code=
err_code=
a=$
b=$
val=`expr ${a} + ${b}`
if [ $? -eq ]
then
return ${ok_code}
else
return ${err_code}
fi }
#调用函数
add e
if [ $? -eq ]
then
echo "add func run sucess."
else
echo "add func run fail."
fi

输出:

 expr: 非整数参数
add func run fail.

1.5、如果获取函数的处理结果

a、使用全局变量

 #定义函数add
function add(){
#定义成功状态码
ok_code=
err_code=
a=$
b=$
val=`expr ${a} + ${b}`
if [ $? -eq ]
then
return ${ok_code}
else
return ${err_code}
fi }
#调用函数
add
echo "add 1 2 result is : ${val}"

输出:

 add   result is : 

b、在函数内部echo 出变量,在函数外部用$(func_name arg1  argn)捕捉

 #定义函数add
function add(){
a=$
b=$
val=`expr ${a} + ${b}`
echo ${val}
}
#使用$(add )捕捉结果
echo "add 1 2 result is : $(add 1 2)"

输出:

 add   result is : 

推荐使用第二种

1.6、break和continue

break用于退出循环,退出后循环不再执行。

cotinue用于退出本次循环,继续执行下一次循环。

break示例:

 #寻找1~10之间第一个偶数
#找到后即跳出循环,不再继续
for i in `seq `
do
tmp=`expr ${i} % `
if [ ${tmp} -eq ];then
echo $i
#continue
break
fi
done

break输出:

  

continue示例:

 #寻找1~10之间所有的偶数
for i in `seq `
do
tmp=`expr ${i} % `
if [ ${tmp} -eq ];then
echo $i
continue
#下面这句echo永远不会被执行
echo "statement after cotinue"
fi
done

cotinue输出:


shell函数-3的更多相关文章

  1. Shell入门教程:Shell函数详解

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...

  2. Shell入门教程:Shell函数的返回值

    shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...

  3. (转)Shell函数

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.  函数 ...

  4. Linux Shell系列教程之(十五) Shell函数简介

    本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...

  5. Shell函数的简单应用

    Shell函数的简单应用 在脚本内给函数传参: #!/bin/bash . /etc/init.d/functions CheckUrl (){ curl -I -s $ | head - } Che ...

  6. Shell函数语法

    Shell函数语法 定义函数: function   函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名  参数一   参数二 return在函数里面使用会跳出函数并 ...

  7. shell 函数

    1 shell函数的定义及其调用 shell函数有两种格式: function name { commands } name() { commands } 其中,name为函数名,commands为函 ...

  8. Shell函数:Shell函数返回值、删除函数、在终端调用函数

    函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...

  9. Shell函数返回值、删除函数、在终端调用函数

    Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...

  10. Linux Shell 函数返回值

    Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fu ...

随机推荐

  1. MonggoDB(二)

    分组聚合 如果你有数据存储在MongoDB中,你想做的可能就不仅仅是将数据提取出来这么简单,可能需要对数据进行分析并加以利用. 聚合框架:可以使用多个构件创建一个管道,上一个构件的结果传给下一个构件. ...

  2. 洛谷.5300.[GXOI/GZOI2019]与或和(单调栈)

    LOJ BZOJ 洛谷 想了一个奇葩的单调栈,算的时候要在中间取\(\min\),感觉不靠谱不写了=-= 调了十分钟发现输出没取模=v= BZOJ好逗逼啊 题面连pdf都不挂了 哈哈哈哈 枚举每一位. ...

  3. GDKOI2017滚粗记

    Preface 比赛成绩非常烂,却腐败得非常爽,但是gmh大爷因为和我们腐败,变得更强. 比赛策略有点问题,拼命想正解而没了暴力分 数论题做得比较少,导致只会找规律.知识点需要补充,如AC自动机,启发 ...

  4. javascript js原生ajax post请求 实例

    HTML代码: 注意: xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencod ...

  5. EXCLE 导入 或 导出

    首先要引用 NPOI.dll   (可在网上下载!)//导入public void OnSubmit()        {            string path = Server.MapPat ...

  6. Java使用BufferedImage修改图片内容

    1.修改图片的架包 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io& ...

  7. jsp页面的地址

    1. ${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的 ...

  8. 判断以xx开头的字符串

    public static void main(String[] args) { String str = "EAN_13,1534651"; String strHttp = & ...

  9. 对象池----unity中应用

    对象池应用在unity中能减少资源消耗,节省内存空间具体原理不再赘述. 以下是他的操作步骤:(注意:对象池中应用到了栈或对队列!) 1).先建立一个(怪物)物体   mMonster; 2).再建立一 ...

  10. Ubuntu 16.04下安装搜狗输入法

    在确保更新了国内镜像源的前提下: 安装sogou输入法步骤 一.安装fcitx键盘输入法系统(系统已安装的可忽略此步骤) 1.添加以下源 sudo add-apt-repository ppa:fci ...