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


相关推荐

  • 小白/新人学Python,用哪个编辑器?VSCode还是PyCharm?[通俗易懂]

    小白/新人学Python,用哪个编辑器?VSCode还是PyCharm?[通俗易懂]先说结论:优先选择PyCharm,不论你学习Python的目的是什么:数据科学/金融/爬虫/网页开发/…原因如下:超全Python编辑器大总结,优缺点一目了然!从功能上说,最全面的只有2个:VSCode和PyCharm,VSCode不适合小白的原因:需要单独配置Python和各种框架的开发环境,运行界面更加复杂PyCharm适合小白的原因:安装和配置简单,所有代码都可以一键运行,小白一看就会。PyCharm下载/安装/配置/使用:视频教程…

    2022年8月29日
    8
  • shell 文件 数字比较

    shell 文件 数字比较

    2022年3月11日
    40
  • 睿智的目标检测7——yolo3详解及其预测代码复现

    睿智的目标检测7——yolo3详解及其预测代码复现睿智的目标检测7——yolo3详解及其预测代码复现学习前言代码下载实现思路1、yolo3的预测思路(网络构建思路)2、利用先验框对网络的输出进行解码3、进行得分排序与非极大抑制筛选实现结果学习前言对yolo2解析完了之后当然要讲讲yolo3,yolo3与yolo2的差别主要在网络的特征提取部分,实际的解码部分其实差距不大。代码下载本次教程主要基于github中的项目https://git…

    2022年6月18日
    39
  • 单片机中P1=0x01什么意思「建议收藏」

    单片机中P1=0x01什么意思「建议收藏」0x01是16进制,转化为二进制:00000001(字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。最常用的字节是八位的字节,即它包含八位的二进制数)P1=0x01,表示P1.7~P.1=0,P1.0=1…

    2025年8月10日
    4
  • apache knox安装_系统服务组件

    apache knox安装_系统服务组件参考链接:https://blog.csdn.net/qq_37865420/article/details/105787160

    2025年7月8日
    4
  • 客户信息管理系统_销售找客户最好的app

    客户信息管理系统_销售找客户最好的app客户信息管理系统课程设计的题目及简介设计说明程序流图程序清单Customer类MainView类Tools类DataManager类调试结果课程设计体会课程设计的题目及简介客户信息管理系统,功能如下:(1)添加客户信息(2)修改客户信息(3)删除客户数据(4)查询客户列表(5)所有数据通过JDBC保存到MySql数据库中1,数据库名:cms_hisoft2,表名:users3,字段列表和类型:id,int,主键,自动增长name,varchar(20),姓名gender,var

    2022年10月17日
    4

发表回复

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

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