【Linux Shell】10. 函数

文章目录

  • 【 1. 函数的定义 】
  • 【 2. 函数参数 】

【 1. 函数的定义 】

  • 所有函数在使用前必须定义 。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。
  • 调用函数仅使用其函数名即可
  • 函数返回值在调用该函数后通过 $? 来获得
  • shell中函数的定义格式如下:
    • 可以带 function fun() 定义,也可以直接fun() 定义,不带任何参数。
    • 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。
[ function ] funname [()]{action;[return int;]}
  • 实例1:一个简单的函数。
#!/bin/bashdemoFun()
{echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

在这里插入图片描述

  • 实例2:带有return语句的函数。
#!/bin/bashfunWithReturn()
{echo "这个函数会对输入的两个数字进行相加运算..."echo "输入第一个数字: "read aNumecho "输入第二个数字: "read anotherNumecho "两个数字分别为 $aNum$anotherNum !"return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

在这里插入图片描述

【 2. 函数参数 】

  • 在Shell中,调用函数时可以向其传递参数。 在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…
  • 特殊字符用来处理参数:
符号作用
$n(n为数字)表示第n个参数的值, 当n>=10时,需要使用 ${n} 来获取参数
$#传递到脚本或函数的参数个数。
$*以一个单字符串显示所有向脚本传递的参数。
$$脚本运行的当前进程ID号。
$!后台运行的最后一个进程的ID号。
$@与 $* 相同,但是使用时加引号,并在引号中返回每个参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
  • 实例:带参数的函数, $10 不能获取第十个参数,获取第十个参数需要 ${10}。
#!/bin/bashfunWithParam()
{echo "第一个参数为 $1 !"echo "第二个参数为 $2 !"echo "第十个参数为 $10 !"echo "第十个参数为 ${10} !"echo "第十一个参数为 ${11} !"echo "参数总数有 $# 个!"echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

laravel getQueryLog() time 代表什么

laravel中的getQueryLog()方法返回了执行的所有查询的详细信息,包括查询语句、绑定的参数和查询的执行时间等。其中,time字段代表了每个查询的执行时间,以毫秒为单位。 以下是一个示例代码,演示了如何使用getQueryLog()方法获取查…

我的阿里云服务器被攻击了

服务器被DDoS攻击最恶心,尤其是阿里云的服务器受攻击最频繁,因为黑客都知道阿里云服务器防御低,一但被攻击就会进入黑洞清洗,轻的IP停止半小时,重的停两个至24小时,给网站带来很严重的损失。而处理 ddos 攻…

华为ipv4+ipv6双栈加isis多拓扑配置案例

实现效果:sw1中的ipv4和ipv6地址能ping通sw2中的ipv4和ipv6地址 R2-R4为存IPV4连接,其它为ipv6和ipv4双连接 sw1 ipv6 interface Vlanif1 ipv6 enable ip address 10.0.11.1 255.255.255.0 ipv6 address 2001:DB8:11::1/64 interface MEth0/0/1 inter…

AIGC(MLLM、VLM、LLM、SD)系列——论文解读目录

涉及面广:多模态生成模型——MLLM ( 目前集中在视觉语言模型——VLM)、大语言模型——LLM、生成模型(SD系列)、对比学习的经典模型(CLIP系列)。 持续更新:对于已经完成解读的会附上链接(有的会在一些场景做尝试,也会附上链接供大家快速参考结果),准备写的会备注筹…

K8S学习指南(70)-K8S中的informa机制

引言 在 Kubernetes 集群中,Informer 是一种重要的机制,用于监控和处理集群中资源对象的变化。它是基于观察者模式设计的,允许开发者注册对某类资源对象的关注,并在对象发生变化时得到通知。本文将深入介绍 Kubernetes 中的 Info…

Pytorch:torch.nn.Module

torch.nn.Module 是 PyTorch 中神经网络模型的基类,它提供了模型定义、参数管理和其他相关功能。 以下是关于 torch.nn.Module 的详细说明: 1. torch.nn.Module 的定义: torch.nn.Module 是 PyTorch 中所有神经网络模型的基类,…

Java课程设计团队博客 —— 基于网页的时间管理系统

博客目录 1.项目简介2.项目采用的技术3.功能需求分析4.项目亮点5.主要功能截图6.Git地址7.总结 Java团队博客分工 姓名职务负责模块个人博客孙岚组长 资源文件路径和tomcat服务器的相关配置。 前端的页面设计与逻辑实现的代码编写。 Servlet前后端数据交互的编写。 用户登录和…

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计

一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第六天-Linux信号(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

910b上跑Chatglm3-6b进行流式输出【pytorch框架】

文章目录 准备阶段避坑阶段添加代码结果展示 准备阶段 配套软件包Ascend-cann-toolkit和Ascend-cann-nnae适配昇腾的Pytorch适配昇腾的Torchvision Adapter下载ChatGLM3代码下载chatglm3-6b模型,或在modelscope里下载 避坑阶段 每个人的服务器都不一样&#xff0…

vue3 封装一个Tooltip 文字提示组件

效果图 默认展示icon图标&#xff0c;悬浮展示文字 如果slot有内容则展示对应内容 实现 用的是El-Tooltip组件 Element - The worlds most popular Vue UI framework 组件代码 <script setup lang"ts"> import { Icon } from /components/Icon import { ElTo…

Linux set命令教程:如何优雅地设置和取消shell变量和选项(附实例详解和注意事项)

Linux set命令介绍 set命令是Linux操作系统中的内置shell命令&#xff0c;用于设置和取消shell变量和选项。它常用于shell脚本中&#xff0c;以配置环境并控制脚本的行为。 Linux set命令适用的Linux版本 set命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限…

【Leetcode】238.除自身以外数组的乘积

一、题目 1、题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度内完成…

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言&#xff1a;M1型号无人机不仅提供了yolo进行物体识别&#xff0c;也增加了基于opencv的人脸识别功能包&#xff0c;仅需要启动摄像头和识别节点即可 链接: 源码链接 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错&#…

Java解决动态口令问题

Java解决动态口令问题 01 题目 某公司门禁密码使用动态口令技术。初始密码为字符串 password&#xff0c;密码更新均遵循以下步骤&#xff1a; 设定一个正整数目标值 target将 password 前 target 个字符按原顺序移动至字符串末尾 请返回更新后的密码字符串。 示例 1&…

Django配置日志系统的最佳实践

概要 日志是跟踪应用行为、监控错误、性能分析和安全审计的重要工具。在Django框架中&#xff0c;合理配置日志系统可以帮助开发者有效管理项目运行过程中的关键信息。本文将详细介绍Django日志系统的最佳实践。 日志系统概述 Django使用Python的 logging 模块来实现日志系统…

掌握Lazada API接口:开启电商开发新篇章,引领业务增长潮流

一、概述 Lazada API接口是Lazada平台提供的软件开发工具包&#xff0c;它允许第三方开发者通过编程方式访问Lazada平台上的商品、订单、用户等数据&#xff0c;并执行相关操作。通过使用Lazada API接口&#xff0c;开发者可以快速构建与Lazada平台集成的应用程序&#xff0c;…

WPF 基础入门(资源字典)

资源字典 每个Resources属性存储着一个资源字典集合。如果希望在多个项目之间共享资源的话&#xff0c;就可以创建一个资源字典。资源字段是一个简单的XAML文档&#xff0c;该文档就是用于存储资源的&#xff0c;可以通过右键项目->添加资源字典的方式来添加一个资源字典文件…

【设计模式】一文理解记住设计模式的原则

目录——阅读所需预计5-10分钟 &#x1f396;️前言&#x1f3af;单一职责原则&#x1f4e3;1. 定义&#x1f49e;2. 定义很抽象&#xff0c;咱继续看&#x1f389;3. 举几个栗子&#x1f49e;4. 以上栗子出现了一个问题&#xff0c;单一职责的划分究竟可以分多细&#x1f449;…

架构设计 识识别复杂度

文章目录 识别复杂度识别复杂度实战 架构设计的本质目的是为了解决软件系统的复杂性&#xff0c;所以在我们设计架构时&#xff0c;首先就要分析系统的复杂性。只有正确分析出了系统的复杂性&#xff0c;后续的架构设计方案才不会偏离方向&#xff1b;否则&#xff0c;如果对系…