Shell脚本之shell函数

【shell】shell脚本实战-shell脚本函数详解 文章目录前言shell函数的定义函数的优势shell 函数的调用实战案例总结 前言 Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。 Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。 今天我们就来讨论下shell脚本的函数 shell函数的定义 shell中的函数的语法有以下三种: 方法一: function 函数名 () { 指令... } 方法二 阅读详情

1.函数基本概述

将命令序列按格式写在一起,可方便重复使用命令序列
Shell函数定义
[ function ] 函数名(){
	命令序列
	[return x]				//使用return或exit可以显式地结束函数
}

调用函数的方法
	函数名 [参数1][参数2]...
	参数的表示方法:$1 $2 $3 ……${10} ${11}

函数的作用范围:
	函数再shell脚本中仅在当前shell环境有效
	shell脚本中变量默认为全局变量
	若要定义仅在函数内部的局部变量时使用local+变量名

2.递归函数

调用自己本身的函数
示例
递归遍历目录
通过定义递归函数list_files来实现

#!/bin/bash
# 递归遍历目录list_files
function list_files(){
       for f in `ls $1`    
       do  
         if [ -d "$1/$f" ];then
           echo "$2$f"
           #递归调用
           list_files "$1/$f" "  $2"
       else  
         echo "$2$f"
       fi
       done
}   
list_files "/var/log" ""

3.数组

应用场景包括:
	获取数组长度
	获取元素长度
	遍历元素
	元素切片 ===>某一个子部份
	元素替换
	元素删除
定义数组的方法:
	数组名=(value0 value1 value2) #用空格隔开
	数组名=([0]=value0 [1]=value1 [2]=value2)
	列表名=“value0 value1 value2”
	数组名=($列表名)
	数组名[0]=value0
	数组名[1]=value1
	数组名[2]=value2

4.使用数组的命令

1.获取数组长度

$(#数组名[@/]}
[root@localhost ~]# arr-number=(1 2 3 4 5);
[root@localhost ~]# arr-length=$(#arr-number[*]}
[root@localhost ~]# echo $arr_length
5

2.读取某下标赋值

${数组名[下标]}
[root@localhost ~]# arr-index2-$(arr-number[2])
[root@localhost ~]# echo $arr-index2
3

3.获取数组元素

${数组名[@/*]}

4.数组遍历

for v in ${数组名[@/*]}
  do
   echo $v
  done

5.举例

#!/bin/bash
#不满足60分的都加到60分
score=(66 58 49 60 88 96)
for ((i=0;i<=&{#score[*]};i++));do
	if [ ${score[$i]} -lt 60 ];then
		new[$i]=60
	else
		new[$i]=${score[$i]}
	fi
done
echo ${new[*]}
冒泡排序
#!/bin/bash
# 冒泡排序
num=(3 5 4 7 8 2)
for ((i=1;i<${#num[*]};i++))
do
         for ((j=0;j<${#num[*]}-$i;j++))
         do
         if [ ${num[j]} -gt ${num[$j+1]} ]
         then temp=${num[j]}
         num[j]=${num[$j+1]}
         num[j+1]=$temp
         fi
         done
 done
 echo ${num[*]}
 [root@server1 ~]# ./maop.sh
2 3 4 5 7 8
数组切片
${数组名[@/*]:起始位置:长度}
[root@localhost ~]# arr=(1 2 3 4 5)
[root@localhost ~]# echo $farr[@])
1 2 3 4 5
[root@localhost ~]# echo $farr[@]:0:2}
1 2
[root@localhost ~]# echo $arr[@]:2:3}
3 4 5
数组的替换
${数组名[@或*]/查找字符/替换字符}
[root@localhost ~]#arr=(1 2 3 4 5)
[root@localhost ~]# echo ${arr[@14/66}
12 3 66 5
[root@localhost ~]#echo $farr@])
1 2 3 4 5
[root@localhost ~]# arr=($(arr[@]/4/66})
[root@localhost ~]# echo $farr[@])
1 2 3 66 5
数组删除(unset)
[root@localhost ~]# arr=(1 2 3 4 5)
[root@localhost ~]#unset arr
[root@localhost ~]# echo ${arr[*])

[root@localhost ~]# arr=(1 2 3 4 5)
[root@localhost ~]# unset arr[2)
[root@localhost ~]# echo ${arr[*])
1 2 4 5
#!/bin/bash
#将低于60分以下的成绩删除
score=(10 20 30 40 50 90 80 50 60)
i=1
for	f	in	${score[*]};do
	if	[ $f -lt 60 ];then
	  unset score[$i]
	fi
	lei i++
done
echo ${score[*]}

6.Shell脚本调试

echo命令
bash命令
命令语法

sh [-nvx] 脚本名

set命令
set -x:开启调节模式

set +x:关闭调节模式
MAPPO实战:从理论到代码的协作智能体训练指南 本文详细介绍了MAPPO算法在多智能体协作训练中的实战应用,从理论基础到代码实现全面解析。通过对比PPO与MAPPO的差异,深入讲解CTDE框架、网络架构设计、参数调优等关键环节,并提供实际项目中的调参经验和常见问题解决方案,帮助开发者快速掌握这一强化学习前沿技术。 阅读详情

相关推荐

从扇束到平行束:等角重排算法在CT重建中的核心原理与MATLAB实践

本文深入解析了CT图像重建中等角扇束重排算法的核心原理与MATLAB实现。通过将实际采集的扇束投影数据,利用几何映射和两次关键插值,转换为适用于经典滤波反投影算法的平行束数据,打通了高效重建的关键路径。文章结合Shepp-Logan模型仿真,提供了完整的MATLAB代码实践,并分析了源-物距、采样率等关键参数对重建质量的影响。

cnn8visionary的博客 647

Shell函数与数组

函数 函数就是将命令语句按格式写在一起,可以方便重复使用命令 函数的格式 [function]函数名(){ 命令语句 [return x] } 调用函数的方法:函数名 [参数1] [参数2]… 函数再shell脚本中仅在当前shell环境有效 shell脚本中变量默认为全局变量 若要定义仅在函数内部的局部变量时使用local+变量名 数组 定义数组的方法: 数组名=(value0 value1 value2) //用空格隔开 数组名=([0]=value0 [1]=value1 [2]=value2) 列表

weixin_49780168的博客 456

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 470

shell学习8--awk中常用的内置函数

A.字符串函数:     1.sub和gsub函数:               sub函数在记录中查找能够匹配正则表达式的最长且最靠左的字串,然后用替换子串替换找到的子串。默认是整个记录,可指定目标字符串。              sub(regualr expression,substitution string);              sub(regualr expression,s

murenqishi的专栏 1551

免费测试国外大模型Claude 3.7 Sonnet API:无需api key(秘钥)

Claude 3.7 Sonnet是Anthropic公司推出的第三代Claude系列AI模型中的中规模版本(2024年发布),在性能与效率间实现平衡。该模型基于改进的Transformer架构,支持128K上下文窗口,擅长复杂推理、数学计算和创意写作,在GSM8K数学基准测试中准确率达92%。其采用"宪法AI"伦理框架,通过多轮对抗训练减少有害输出,同时新增多模态理解能力(可解析图片/图表内容)。Claude 3.7 Sonnet是Anthropic推出的高效轻量级大模型,主打快速响应与成本优化。

Explinks的博客 1497

YOLOv5基于深度学习的道路缺陷检测系统

然而,由于长期的自然侵蚀、车辆磨损等因素,道路表面容易出现裂缝、坑洼等缺陷。这些缺陷不仅会影响驾驶舒适性,还可能引发交通事故,尤其是在恶劣天气或夜间行车条件下。随着人工智能技术的快速发展,基于深度学习的道路缺陷检测技术能够在降低人力成本的同时提高检测效率,为道路维护提供了新的解决方案。本项目构建了基于YOLOv5的道路缺陷检测系统,结合PyQt5开发了用户友好的UI界面,具备实时检测和图片分析功能。工具对图片进行标注,生成YOLO格式的标注文件。上传包含道路裂缝或坑洼的图片,系统会标注出缺陷的位置及类别。

YOLO 1076

shell文本过滤编程(八):awk之内置函数

【版权声明:转载请保留出处:blog.youkuaiyun.com/gentleliu。Mail:shallnew at 163 dot com】 这一节来见识一下a w k许多强大的字符串函数及其使用方法。 1、 sub 和 gsub函数: 用法:sub( Ere, Repl, [ str ] ) gsub( Ere, Repl, [ str ] ) 在第三个参数给出字符串中查找满足Ere 参数指定的扩展正则表达式的字符串,并使用第二个参数替换之。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。Sub函数

程序猿的挨踢人生 2476

如何使用Google Maps API爬取地理数据:详细教程与Python实现

Google Maps API 是一组服务的集合,允许开发者访问地图、地点、路线等地理信息。:将地址转换为地理坐标,或将地理坐标转换为地址。:计算两点之间的行车路线、步行路线等。Places API:获取附近的地点、商店、餐馆等。:计算多个地点之间的距离和时间。在接下来的代码中,我们将结合这些 API,展示如何获取并处理地理数据。本文详细介绍了如何使用 Google Maps API 获取地理数据,涵盖了从地址转经纬度、获取地点详情、计算路线、计算多个地点的距离与时间等多个功能。

2201_76125261的博客 733

Shell中求字符串索引的几种技巧

在Shell中如果要从字符串中找某个字符或子字符串,能想到的无非是expr index,或通过awk $NUM,或通过awk match来求其索引,下面通过例子来说明: 【方法一】: 利用expr index来求索引

杰瑞的专栏 1万+

【测开求职】面试题:JAVA 吐血整理

本篇文章包含本次测开工程师秋招过程中遇到的所有JAVA面试题,全文两万字,亲测应对各个大厂的面试毫无压力👉

vector的博客 1211

C语言设计模式全面解析:从理论到28个实战示例

本文系统介绍了23种经典设计模式在C语言中的实现方法。通过结构体、函数指针等技巧,C语言可以优雅地模拟面向对象特性,实现代码复用与解耦。文章分类详解了创建型、结构型、行为型三大类模式,并提供了28个完整代码示例,包括单例、策略、观察者等核心模式的精简实现。这些模式在嵌入式系统、操作系统内核等场景中广泛应用,如状态机、事件驱动等。学习C语言设计模式的关键在于理解模式意图,掌握函数指针和结构体组合等技巧,并在实际项目中灵活运用。本文为C语言开发者提供了全面的设计模式参考指南。

数字人生 364

【shell】shell index

Index exec Using exec string manipulation Manuplating Strings tool management brew terminal iterm2 readline 【shell】readline交互 completion Appendix J. An Introduction to Programmable Completion , GNU Programmable Completion vim ruby grep find getopt comple

xhdxhdxhd的博客 1064

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

宁波阿成的博客 607

shell脚本之函数

函数: 1.语法 方法1: 函数名() { 函数体 return n } 方法2:(更加规范) function 函数名() { 函数体 return n } [root@localhost mnt]# vim 01_function.sh ##################### #!/bin/bash function fun1(){ ...

lilygg的博客 4770

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

shell脚本-函数

先声明、定义函数,再去调用函数function 函数名 {#一系列业务动作 }Shell脚本:Shell函数使用关键字function或者直接定义函数名和大括号来定义。C语言:C函数需要指定返回类型和参数列表,使用关键字intvoid等来定义。Python:Python函数使用def关键字定义,可以指定参数和默认值。

sq2048935747@163.com的博客 1368

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Shell脚本函数

Shell脚本函数 Shell脚本函数应用 Shell脚本函数定义的基本格式如下所示,其中[function]是可选的,表示该函数的功能,这个是可以省略掉的;函数名后面加个(),里面是没有内容的;而我们执行的命令序列放在{}里面的,[return x]的作用是当命令序列执行完后返回给系统的一个值,该项也可以省略。 Shell脚本函数语法格式 [function] 函数名 (){ 命令序列 [...

weixin_44988134的博客 244

Shell脚本之函数及数组

一、函数 1.1函数的作用 语句块定义成函数约等于别名,定义函数,再引用函数 封装的可重复利用的具有特定功能的代码 1.2函数的基本格式 法一: [function] 函数名 (){ 命令序列 [return x] #使用return或者exit可以显式的结束函数 } 法二: 函数名(){ 命令序列 } 1.3函数注意事项 1.直接写函数中调用 2函数直接写函数名同名函数后一个生效 3.调用函数一定要先定义 4.只要先定义了调用的其他函数定义顺序无

m0_51160032的博客 4403

在Shell脚本中通过ssh从脚本运行函数

因此,为了能够在远程机器上运行脚本中的函数,需要将函数定义先传输到远程机器上,然后再调用这些函数。当你执行这个命令时,它会将本地的 hello_world 函数定义作为字符串传输到远程主机,并在远程主机上执行该函数。cat将以文本形式接收该函数的定义,而$()将在当前shell中执行它,而该shell将成为远程shell中的已定义函数。这个方法就是相当于ssh登录远程主机后,向远程主机发送myFile脚本,然后执行脚本,执行脚本中的f函数,执行完毕后rm删除myFile脚本。否则,您的建议将是最好的。

王轩的博客 3553

Shell脚本基础:函数

函数体# 你希望执行的命令示例 1:简单的函数定义# 定义一个函数,打印 hello world函数体内可以包含任意的命令或逻辑。调用函数时只需要使用函数名即可。# 定义函数,使用 local 声明局部变量# 调用函数echo "Incremented result is: $result" # $result 是全局变量,仍然为未定义6local关键字使得result仅在函数内部有效,不会影响全局环境。

vortex5的博客 2964

Shell脚本函数简介及运用

定义函数就是只将一段实现某个任务的命令序列封装进一个函数,便于使用和后期维护。function 函数名() {命令序列}函数名() {命令序列}#!/bin/bash#定义函数运算()a=2b=3echo "相加等于:$jia"echo "相减等于:$jian"}...

云计算运维工程师的成长之路 2569

Shell脚本 ——Shell 函数

Shell脚本中的函数用于组织和重用代码片段。通过定义函数,可以将复杂的脚本逻辑分解成更小、更易管理的部分。

Darrich的博客 584

Shell脚本—函数

Shell脚本—函数 文章目录Shell脚本—函数1.函数基本概述2.函数的基本语法3.函数的传参4.函数状态返回5.函数练习6.shell 数组7.数组的遍历与循环 1.函数基本概述 1.什么是shell函数 函数就是一堆命令的集合,用来完成特定功能的代码块 2.为什么要使用函数 比如:我们经常需要使用判断功能,完全可以将其封装为一个函数,这样在写程序过程中可以在任何地方调用该函数,不必重复编写,这样能减少代码冗余,可读性更强 2.函数的基本语法 1.定义shell函数,可以通过以下两种方式进行定义 #方

每天进步一点点!!! 1005

shell脚本函数传参

函数可以提高代码复用,在python、java中比较常见。 shell脚本也有函数,可以将一组命令集或语句形成一个可用代码块。 定义格式 函数名(){ command1 command2 ... commandN [ return value ] } 函数返回值 可以显示增加return语句;如果不加,则将最后一条命令运行结果作为返回值(一般为0,如果执行...

a200822146085的博客 5081

Shell脚本之函数

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

weixin_67474417的博客 5378

shell中判断函数返回值_Shell 脚本中的函数

通过之前发表的文章,相信大家对 Linux Shell 脚本的基本语法有了一定程度的了解,接下来几篇文章我将会介绍一些 Shell 脚本编程的一些高级语法,今天我们就从函数开始。提到函数,相信有过编程基础的小伙伴都会了解一些,函数其实是我们编码的逻辑单元,无论我们用的面向过程的语言,还是面向对象的语言,函数都是编程中基本的内容。好的函数接口设计,清晰的函数逻辑,巧妙的函数提取,都是对程序员最基本的...

weixin_27729671的博客 6419

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

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

weixin_59663288的博客 5758
上一篇: Shell编程之循环语句(for、while、until)
下一篇: 分布式之GlusterFS分布式文件系统
tanwenlong01
博客等级 码龄6年 26粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值