当前位置:网站首页>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[*]}"
边栏推荐
猜你喜欢
"Digital Economy Panorama White Paper" Special Analysis of Banking Industry Intelligent Marketing Application Released
log4net使用指南(winform版,sqlserver记录)
防止数据冒用的方法
电解电容漏电流及均压
C# 获取系统已安装的.NET版本
【面试高频题】可逐步优化的链表高频题
This application has no explicit mapping for /error, so you are seeing this as a fallback
Redis高可用部署
【Robustness of VQA-1】——2019-EMNLP-Don’t Take the Easy Way Out
富媒体在客服IM消息通信中的秒发实践
随机推荐
获取url地址中问号后参数(即使是iframe也可以)
redis主从复制
【C language】动态数组的创建和使用
web course design
redis的线程模型
Senior told me that the giant MySQL is through SSH connection
wait system call
Django 无法链接mysql数据库
enum in c language
数论知识点
ClickHouse物化视图(八)
ICML 2022 | Out-of-Distribution检测与深最近的邻居
【C language】typedef的使用:结构体、基本数据类型、数组
PTA 实验7-5 输出大写英文字母(10 分)
元宇宙:下一代互联网启程(附元宇宙深度报告PDF)
C2000在线升级主程序下载kernel完成后跳转到kernel运行的过程记录
百钱买鸡(一)
matlab simulink的scope 示波器光标如何移动记录
bat文件(批处理文件)运行时一闪而过解决方法
The use of gdb tui