《前端运维》一、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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringCloud服务注册中心双节点集群(Eureka集群)

    SpringCloud服务注册中心双节点集群(Eureka集群)0、前言    最近在进行重构一个新项目,为了后续更好的落地,适应于日新月异的技术更新,进行了各方的技术选型及技术预研,最终选型基于微服务架构体系进行开发重构。项目构建前最重要的一步就是要想清楚,整体的部署架构、高可用性(HA)等等,做好前期的部署架构技术调研,确定最终方案。    在微服务架构体系中,核心技术便是SpringCloud,通过登录官网查看SpringClo…

    2022年6月11日
    28
  • idea2021.9激活码-激活码分享

    (idea2021.9激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    69
  • ubuntu下pycharm安装_pycharm激活成功教程版linux

    ubuntu下pycharm安装_pycharm激活成功教程版linuxlinux中安装pycharm的方法:1、获取PyCharm你可以通过下面网站获取PyCharm。屏幕中央有一个很大的’Download’按钮。https://www.jetbrains.com/pycharm/download/#section=linux你可以选择下载专业版或者社区版。如果你刚刚接触Python编程那么推荐下载社区版。然而,如果你打算发展到专业化的编程,那么专业版…

    2022年10月18日
    0
  • 发送国外邮箱失败

    发送国外邮箱失败在公司当发送邮件给国外客户的时候,发送失败提示:点击下面链接:则代表地址被加入了黑名单,发送不到邮件。解决方法,点击方框内的网站,打开网页后拉到最下面:点击解除封禁跳转到则表示成功。需要1-2个小时进行解除! 转载于:https://blog.51cto.com/8763846/1629650…

    2022年7月12日
    23
  • matlab中 meshgrid 函数的用法

    matlab中 meshgrid 函数的用法转自:https://blog.csdn.net/foreverhuylee/article/details/32731349meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应用。函数功能生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图操作时,涉及到x、…

    2022年5月1日
    58
  • Android Service 服务(一)—— Service

    Android Service 服务(一)—— Service

    2021年11月29日
    38

发表回复

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

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