《前端运维》一、Linux基础–07Shell函数

linuxshell可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:[function]funname[()]{action;[return

大家好,又见面了,我是你们的朋友全栈君。

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:

[ function ] funname [()]

{

    action;

    [return int;]

}

Shell中的函数有两种写法,一种是:

function a() {
  action;
  return init;  
}

另外一种是:

a() {
  action;
  return init;  
}

这两种的含义都是一样的。参数的返回,可以显示加return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n,n可以使0~255的数字。0代表成功。

我们来看个例子:

#!/bin/bash
demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

结果是:

<span role="heading" aria-level="2">《前端运维》一、Linux基础--07Shell函数

 我们再来看一个带有return的函数例子:

#!/bin/bash
funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

结果是:

<span role="heading" aria-level="2">《前端运维》一、Linux基础--07Shell函数

 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…之前在变量的一篇文章里我们聊过这个,不再重复,我么来看一个带参数的例子:

#!/bin/bash
funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

结果是:

<span role="heading" aria-level="2">《前端运维》一、Linux基础--07Shell函数

ps:

1、$? 仅对其上一条指令负责,一旦函数返回后其返回值没有立即保存入参数,那么其返回值将不再能通过 $? 获得。

例子:

#!/bin/bash

function demoFun1(){
    echo "这是我的第一个 shell 函数!"
    return `expr 1 + 1`
}

demoFun1
echo $?
echo $?

结果:

<span role="heading" aria-level="2">《前端运维》一、Linux基础--07Shell函数  

 2、函数与命令的执行结果可以作为条件语句使用。要注意的是,和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124361.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一文解决,oracle显示ORA-01017

    一文解决,oracle显示ORA-01017首先在网上拷贝scott.sql文件内容(新建记事本,在改后缀.sql)下载scott.sql(数据库文件)再拷到虚拟机中,随意放一个位置(自己记住就好)我放的位置是:/home/oracle不知道位置的可以用:输入pwd命令查看位置或者右键查看然后我们进入sqlsqlplus/assysdbaconn/assysdba在导入scott.sql…

    2022年5月18日
    61
  • 2021年社工必备查询网址汇总[通俗易懂]

    2021年社工必备查询网址汇总[通俗易懂]社工查询网站手机号注册网站查询信用查询国内企业信息政府信息查询身份信息查询驾驶员及车辆信息查询物品资产查询物流查询发票查询金融查询手机信息查询个人信息查询搜索引擎手机号注册网站查询牛查查http://www.newx007.com比REG007更好用的查询手机注册网站的神器信用查询1、信用中国查询内容:工商注册企业和个人、行政许可和处罚网址:http://www.creditchina.gov.cn/2、全国企业信用信息公示查询内容:全国企业工商登记注册信息http://g

    2022年6月1日
    96
  • vuex mapGetters「建议收藏」

    vuex mapGetters「建议收藏」1、vuex配置//vuex的配置//注意Store是大写conststore=newVuex.Store({//数据保存state:{show:false,count:…

    2022年6月8日
    28
  • Java日志管理最佳实践「建议收藏」

    原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-practicelog/。感谢原作者,感谢ibm网站,里面有好多的精华帖。日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。对于开发人员来说,在程序中使用日志API记录日志并不复杂,不过遵循

    2022年4月11日
    42
  • 非局部均值滤波算法[通俗易懂]

    非局部均值滤波算法[通俗易懂]2016.09.09更新,修改了SSIM中值太大的问题首先谈一下什么是非局部均值滤波。在此之前,我们先来看一下均值滤波的原理。均值滤波均值滤波的计算非常简单,将图像像素点灰度记录在数组中,然后设置方框半径的值,然后将方框中的所有点的像素求和取平均,得到的结果就是均值滤波后对应像素点的灰度值。优点:计算很快而且简单从算法可以看出,只是求了平均,并没有很复杂的计算缺点:得到的图像很模

    2022年5月21日
    47
  • pycharm激活码2021【注册码】[通俗易懂]

    pycharm激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号