当前位置:网站首页>shell脚本------函数的格式,传参,变量,递归,数组
shell脚本------函数的格式,传参,变量,递归,数组
2022-08-09 11:42:00 【AKA|布鲁克林欧神仙】
目录
一,shell函数定义
- 将命令序列按格式写在一起,可方便重复使用命令序列
二,格式
1,格式一:
function 函数名 {
命令序列
}
2,格式二:
函数名 () {
命令序列
}
三,函数返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值。
使用原则:
- 函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
- 退出状态码必须是0-255.超出时值将为除以256取余
四,函数传参
五,函数变量的作用范围
函数在shell脚本中仅在当前shell环境中有效
shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
六,递归
七,数组
一,数组的定义
数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用
二、数组的分类
普通数组:不需要声明直接定义,下标索引只能是整数
关联数组:需要用declare -A声明否则系统不识别,索引可以是字符串
三、数组的定义方式
第一种:直接把要加入数组的元素用小括号括起来,中间用空格分开 num=(11 22 33 44)
第二种:精确的给每一个下标索引定义一个值加入数组,索引数字可以不连续 num=([0]=55 [1]=66 [2]=77 [4]=88)
第三种:先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组 list=“11 12 13 14” num=($list)
第四种:可以把命令的结果用小括号括起来添加到数组,那么数组会以空格或者制表符区分每一个元素 num=(cat /etc/passwd)
[[email protected] ~]# echo ${#num[*]}
111
3.1、数组格式
如:arr=(11 22 33 44)
数组名称:arr
数组元素:11,12,12,14,数组元素默认是以空格分隔的
数组长度:4,有4个元素
数组下标:每个数组元素都有一个下标索引,一般从0开始,33是数组第三个元素,但是它的下标索引是2
3.3、元素删除
元素删除
[[email protected] ~]# unset fruit[0]
[[email protected] ~]#
[[email protected] ~]# declare -a | grep fruit
declare -a fruit='([1]="banana" [2]="orange")'
3.4、数组遍历
#!/bin/bash
arr=(1 2 3 4 5 6)
for i in ${arr[*]} 或for i in ${arr[@]}
do
echo $i
done
3.5、冒泡排序
#!/bin/bash
read -p "请输入数组:" a
num=($a)
echo "你输入的数组为:${num[*]}"
for ((i=0;i<${#num[*]};i++))
do
for ((j=i+1;j<${#num[*]};j++))
do
if [ ${num[i]} -gt ${num[j]} ]
then
temp=${num[i]}
num[i]=${num[j]}
num[j]=$temp
fi
done
done
echo "排序后的数组为:${num[*]}"
边栏推荐
- [工程数学]1_特征值与特征向量
- fidder为什么不会抓包的问题
- 电解电容漏电流及均压
- 从零开始Blazor Server(9)--修改Layout
- 【Basic model】Transformer-实现中英翻译
- x86 exception handling and interrupt mechanism (2) interrupt vector table
- 排序--快排(图解)
- Paper Sharing | ACL2022 | Argument Relation Extraction Based on Transfer Learning
- wpf实现简易画板功能(带截取画板,签名截图等等)
- 【VQA survey】视觉问答中的语言学问题
猜你喜欢
随机推荐
Notepad++安装插件
IDEA 关闭/开启引用提示Usages
PAT1006
PAT1008
"Digital Economy Panorama White Paper" Special Analysis of Banking Industry Intelligent Marketing Application Released
【C language】动态数组的创建和使用
从零开始Blazor Server(9)--修改Layout
抗积分饱和 PID代码实现,matlab仿真实现
log4net使用指南(winform版,sqlserver记录)
PAT章节
获取url地址中问号后参数(即使是iframe也可以)
湖南进芯电子替代TIC2000的可能性
JS封装防抖(代码持续优化)
字符串 | 反转字符串 | 双指针法 | leecode刷题笔记
mysql参数配置学习----临时表内存表的设置
PAT1003
PAT1004
F280049库函数API编程、直接寄存器控制编程和混合编程方法
win10 outlook邮件设置
win10右键文件,一直转圈