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:关闭调节模式
智能车竞赛卡丁快跑组:自动驾驶与人车交互技术实战解析 本文深入解析了智能车竞赛卡丁快跑组的技术核心,重点探讨了自动驾驶与人车交互两大模块的实战方案。文章详细拆解了从环境感知、路径规划到语音识别、命令执行的完整流程,并分享了基于单片机平台的调试心法与赛场经验,为参赛者提供了一套从零开始、分步攻坚的系统性备赛指南。 阅读详情

相关推荐

编程小白的自学笔记四(正则表达式模块search函数)

本文仅仅简单介绍了search的使用,供小白学习探讨。

m0_49914128的博客 2322

Shell函数与数组

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

weixin_49780168的博客 456

详解GPU显存和batch size的关系

GPU显存、规格指标;神经网络训练,显存占用

orangerfun的博客 6211

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

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

murenqishi的专栏 1551

告别卡顿!用AVPro Video在Unity 2022.3里流畅播放4K视频的保姆级配置流程

本文详细介绍了如何在Unity 2022.3中使用AVPro Video插件实现4K视频的流畅播放。从环境配置、插件选型到核心性能优化技巧,包括解码器设置、内存管理策略和多平台适配方案,帮助开发者彻底解决卡顿问题,提升视频播放体验。

weixin_32349561的博客 318

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7847

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

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置

关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c...

LeonJin的博客 2万+

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

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

杰瑞的专栏 1万+

直流无刷电机FOC控制算法 理论到实践 —— 实践

关于直流无刷电机FOC控制算法的理论章节,本人已经在前两章进行过详细说明,大家可以自行进行阅读,请务必了解过理论之后再来学习如何具体进行实现。直流无刷电机FOC控制算法 理论到实践 —— 理论(一)直流无刷电机FOC控制算法 理论到实践 —— 理论(二)本章节主要讨论采用MCU微控制器如何具体实现直流无刷电机的FOC控制。

爱出名的狗腿子 1万+

SAP S/4 HANA CO 成本模块实战指南

摘要:SAP S/4HANA CO(管理会计)模块是企业内部成本管理的核心工具。本文系统介绍了CO模块的组织结构(控制范围与会计科目表映射)、基础概念(计划值与预算值)以及6大子模块功能(成本要素、成本中心会计等)。重点解析了各子模块的应用场景与差异,包括成本归集、费用分摊、利润分析和产品成本控制,并对比了利润中心与成本中心、内部订单与销售订单的区别。通过事务代码示例和功能对比表,帮助用户快速掌握SAP CO模块的核心管理逻辑与实施要点。

金牌架构师 1125

【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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

shell脚本之函数

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

lilygg的博客 4770

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

shell脚本-函数

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

sq2048935747@163.com的博客 1368

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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、付费专栏及课程。

余额充值