Shell脚本11 -- 函数

Shell脚本中使用function(函数)示例 主要介绍了Shell脚本中使用function(函数)示例,本文着重讲解的是如何在shell脚本中使用自定义函数,并给出了两个例子,需要的朋友可以参考下 立即下载

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(8) until循环以及函数基本创建调用】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。


Shell 函数是指在 Shell 脚本中封装的一段可以重复调用的代码。它不仅可以减少代码冗余,还能提升脚本的可维护性与扩展性。函数通常包括 创建、调用、传参 和 返回值 四个部分。


1 函数创建

Shell 函数的定义语法如下:

函数名() {
    # 函数体
}

注意:

  • 函数体内可以是任意 Shell 脚本命令。
  • 函数名应具有描述性,并避免与系统命令或变量名冲突。

示例:定义一个简单函数

DemoFunc() {
    echo "hello world"
}

此代码定义了一个名为 DemoFunc 的函数,函数体的内容为输出字符串 "hello world"。


2 函数调用

定义函数后,可以通过直接输入函数名来调用它。

示例:调用 DemoFunc 函数

DemoFunc

执行结果:

hello world

注意: 函数定义与调用顺序无严格要求,但在函数调用时,函数必须已定义。


3 函数传参

Shell 函数可以接收参数,通过 $1、$2 等特殊变量来引用这些参数:

  • $1 表示第一个参数。
  • $2 表示第二个参数,以此类推。

示例:函数接收单个参数

DemoFunc() {
    echo "hello world"
    echo "My name is $1."
}

DemoFunc xiaoyu

执行结果:

hello world
My name is xiaoyu.

在函数调用时传入参数 xiaoyu,并通过 $1 引用该参数。

示例:函数接收多个参数

DemoFunc() {
    echo "hello world"
    echo "My name is $1, and my age is $2 years old."
}

DemoFunc xiaoyu 27

执行结果:

hello world
My name is xiaoyu, and my age is 27 years old.

此处 $1 和 $2 分别引用传入的两个参数。


4 函数返回值

Shell 函数的返回值通常通过 return 指定,范围为 0-255,或通过全局变量(如 $? 或自定义变量)返回。

示例:通过 return 返回值

DemoFunc() {
    return 42
}

DemoFunc
echo "Function returned: $?"

执行结果:

Function returned: 42

示例:通过变量返回值

DemoFunc() {
    local result=$(( $1 + $2 ))
    echo $result
}

sum=$(DemoFunc 10 20)
echo "Sum is $sum"

执行结果:

Sum is 30

解析: 函数通过 echo 输出结果,调用函数时用 $() 捕获返回的值并赋予变量 sum。


5 总结

功能关键点示例代码
创建函数使用 函数名() 定义函数;函数体写在大括号 {} 内DemoFunc() { echo "hello world"; }
调用函数直接输入函数名调用DemoFunc
传递参数使用 $1、$2 等引用参数DemoFunc xiaoyu 27
返回值使用 return 返回状态码,或通过 echo 输出捕获结果sum=$(DemoFunc 10 20)
Kaggle赛题总结:Enefit - Predict Energy Behavior of Prosumers 竞赛旨在解决能源不平衡的问题,即预计使用的能源与实际使用或产生的能源不符。自发自用者是既消耗又产生能源的个体,他们在造成能源不平衡方面起到了重要作用。尽管他们只占所有能源消费者的一小部分,但他们不可预测的能源使用行为给能源公司带来了物流和财务问题。如果不加以解决,可能会导致运营成本增加、电网不稳定以及能源资源的低效利用。如果这个问题得到有效解决,将显著降低不平衡成本,提高电网的可靠性,并使自发自用者更高效和可持续地融入能源系统中。 阅读详情

相关推荐

振动信号相位测量的关键技术解析

本文深入解析了振动信号相位测量的关键技术,强调相位是振动信号的“身份证”,对于动平衡和故障诊断至关重要。文章详细阐述了键相传感器与振动传感器的选型、安装要点,以及时域和频域(FFT)核心算法,并针对现场噪声、转速波动等挑战提供了实战解决方案,帮助工程师实现精准、稳定的相位测量。

vv45678的博客 838

Shell编程之函数库

函数库:在大型复杂的shell脚本中,有多个脚本对其中部分代码反复执行,把这段代码进行封装,封装后就叫函数库 代码片段: 定义一个函数库:vim hsk.sh #!/bin/bash #函数库的作用:在写一个大型脚本时候, #有些代码可以被多个脚本重复使用进行封装 function add { echo "`expr $1 + $2`" } function reduce{ ...

吴大锤的专栏 306

Android11,无障碍服务模拟多手势使用dispatchGesture时总是onCancelled

AccessibilityService的dispatchGesture去模拟多手势,总是onCancelled的一种解决办法

m0_49953943的博客 2102

shell脚本之函数

return表示退出函数并返回一个退出值,脚本中可以用$?变量只返回执行的最后一条命令的退出返回码。函数在 shell 脚本中仅在当前 shell 环境中有效。数组:存储多个元素的连续的内存空间,相当于多个变量的集合。语句块定义成函数约等于别名,定义函数,再引用函数。退出码必须是0-255,超出的值将为除以256取余。索引可支持使用自定义的格式,而不仅是数值格式,即为。将变量限定在函数内部使用 local 命令。bash的数组支持稀疏格式(索引不连续)索引的编号从0开始,属于数值索引。

MCB134的博客 583

智警杯1.4---excel可视化

知识点

lulu001128的博客 949

OpenHarmony-AI调研

基于OpenHarmony-5.0.0版本以及laval社区等网络资料调研当前OH上的AI发展情况。

qqq1112345的博客 1367

Shell函数

在实际的程序编程中,开发者通常将具有固定功能且多次使用的一组命令(语句)封装在一个函数中,当需要使用该功能时只需调用该函数即可。在Shell中同样可以使用函数,需要注意的是,函数在调用前必须先定义。 调用程序可以传递参数给函数,函数可用return语句将运行后的结果返回给调用程序。 函数的定义 函数定义的方式如下所示,与C语言程序中的函数类似。 func_name() { command1 ....

anton_99的博客 522

AWS RDS 介绍 三)创建 RDS 实例

AWS RDS 介绍 共分为 7 个部分, 其中 第 3部分重点介绍,如何创建一个RDS 实例。 三) AWS RDS 试用MySQL http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.

XuYongshi02的专栏 7645

shell封装

命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于中各种程序的启动脚本)shift(shift 1) 命令每执行一次,变量的个数($#)减一,移动2位可以 执行2次shift。

博客 1229

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 83

MATLAB 开发项目实例 1000 例专栏之第37例:基于Simulink的无人机飞行控制系统设计

通过上述项目实例,我们成功地使用Simulink设计和仿真了一个无人机的飞行控制系统。这个项目展示了从无人机建模、路径规划、控制器设计到仿真验证的完整流程。Simulink的可视化和模块化特性使得系统的建模和仿真更加直观和高效。

xiaoheshang_123的博客 163

用shell脚本封装一个函数,函数功能实现数组求和

用shell脚本封装一个函数,函数功能实现数组求和

weixin_63506558的博客 613

[机器学习] 第二章 模型评估与选择 2.ROC:roc_curve原理及源代码详解

代码见:https://github.com/Carrie-Yi/machine_learning/tree/main/roc_curve

心宝的博客 1493

Shell脚本【11】Shell函数(函数定义、函数调用)

Shell函数(函数定义、函数调用)函数函数调用函数例题特殊的函数调用 函数 Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。 语法结构: function 函数名 () { 命令列表 return value } function是 Shell 中的关键字,专门用来定义函数,也可以不写。 return value表示函数的返回值。 由{ }包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。 函数调用

qq_43624033的博客 2592

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Shell脚本11】Shell 函数

的值得到的是 0,也就是上一条 echo 命令的结果,而 demoFun1 的返回值被覆盖了。为 0,如果找不到,则返回值 $?之后再用函数的 return 值作为测试,其中 demoFun1 返回值为 0,demoFun2 返回值选择了任意一个和 0 不同的整数,这里为 12。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…将函数作为条件语句交给 if 判断,得出返回值为 0 时,依然为 true,而返回值只要不是 0,条件语句都判断为 false。

qq11771258的博客 525

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Shell 脚本速成】11、Shell 流程控制 while&case、函数

流程控制-until 语句、case 语句、shell 函数

GG Bond 的博客 1044

linux 脚本 字符串函数调用函数调用,Linux#11 shell脚本函数

点击上方蓝色小字,关注后端技术碎片时间x体系学习这是第147篇原创;距2019年还有155天交流微信:friendfb00shell脚本函数函数是软件功能复用的基本单元。在实际开发中,我们常会将特定功能设计为函数,一个软件功能常由一个和多个函数的组合调用所实现。一个函数包含如下元素:函数名形参列表语句实现体返回值调用函数时,可将函数当做“黑盒”,调用方不需要知道函数是如何实现(how)的,但是需要...

weixin_35803480的博客 498

linux0.11是如何加载并执行一个二进制可执行文件和shell脚本文件的?

1.linux0.11是如何加载并执行一个二进制可执行文件和shell脚本文件的?   答:linux0.11仅支持ZMAGIC执行文件格式,并且执行文件代码都从逻辑地址0开始执行,因此不支持含有代码或数据重定位信息的执行文件。加载并执行一个二进制文件或脚本的主要函数是do_execve(),其主要功能为: a.   执行对命令行参数和环境参数空间页面的初始化操作------设置初试空间起始指

Skylar 2038

Shell脚本编程剖析(更新完毕)

课程简介:           课程包含了Linux/UNIX系统下的Bash编程知识和实例。通过循序渐进的脚本编程知识讲解,学员可以系统的学习脚本编程基础,课程中同时穿插了脚本实例和作业,以强化学员Bash编程的实际应用能力。本课程适用于Linux/UNIX系统管理员和开发人员,以及拥有Linux基础知识的学生。通过本视频,学员可以了解SHELL脚本的编写和实际应用。 讲师介绍:

无限未来! 510

Shell脚本之shell函数

shell函数

boyuser的博客 635

一篇文章学会shell脚本

一、Shell传递参数 1 #!/bin/bash 2 3 # 假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。 4 5 echo "-- \$* 演示 --" 6 for i in "$*"; do 7 echo $i ...

dielucuan8830的博客 184

Shell脚本中的if循环、while循环、for循环、case循环语句、函数、比较运算符

定义变量规则 : 变量名=值 shell定义变量的规则: 1:等号两边不能有空格 2:定义特殊的变量需要用单引号或者双引号结合 3:定义linux命令需要用反单引号 区分单引号和双引号的不同和相同点 ...

wangyudan1018的博客 490

Shell脚本之函数

前言:接上回分析,关于shell脚本最后一节和拐友们讲一下最后的函数,因为shell函数经常会使用。 一.Shell函数 1.1Shell函数的基本格式 第一种: [function] 函数名(){ 命令序列 [return x] #使用return或exit可以显示的结束函数 } 第二种: 函数名() { #函数名后面()是没有内容的 ...

weixin_67474417的博客 5376

十一、Linux Shell脚本:函数与模块化

随着脚本越来越复杂,把所有代码都堆在一起会很难维护。这时就该用函数了,你可以把它看作是创建属于你自己的“新命令”。把一段常用逻辑封装成函数,以后只用喊一声它的“名字”就能调用。给函数“递东西”(传参数)用$1, $2;而函数想“回话”有两种方式:用return返回一个0或非0的“状态码”(表示成功或失败),用echo则能“喊出”具体的数据,让你在外面用$()接住。学会这个,就能开始打造自己的通用工具库了。

专注于 Agent 工程、AI 产品、Harness Engineering、LLM 算法等方向,OpenMathModel、Nivik 等开源项目作者 6万+

Shell脚本学习笔记(3)——函数的调用以及变量的作用域

Shell是用户和Linux内核沟通的桥梁,所以学习Shell是很有必要的。文章主要分享了一些Shell的基础知识,以及Shell函数如何定义,调用。以及使用注意事项!同时文章末尾也分享了学习Shell的电子书。很适合新手入门进行学习。

万里羊的博客 7648

shell脚本之 函数——【初学者必看】

shell脚本之函数一、shell函数定义二. 函数返回值 一、shell函数定义 将命令序列按格式写在一起 可方便使用命令序列 格式1: function 函数名 { 命令序列 【return x】 //使用return或exit可以显示地结束函数 } 函数名 格式2: 函数名 () { 命令序列 } 函数名 经典案例: #调用函数,是从上往下依次执行的 f1 (){ echo hello } f3 (){ echo "$(f1) $(f2)" } f2 (){ echo

weixin_59663288的博客 5757
上一篇: Shell脚本10 -- case分支控制
下一篇: Shell脚本12 -- 不同脚本互相调用
?crying
博客等级 码龄7年 449粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值