shell 编程值循环语句与函数 二
函数
有些 脚本会反复拿出来用
alias 脚本呢比较复杂
函数 脚本的别名
检测系统#
函数定义#
函数的定义#
函数名 () {
脚本
function 函数名 () {
}
function 函数名 {
}
如何使用函数#
1、定义
2、调用
你准备一个只存函数的脚本
函数一定要先定义再使用
#运行脚本 用 . (source
启动httpd成功/失败会提示。#
函数的变量作用范围#
#先给name赋个值,lisi 。用func函数定义 name=zs,运行这个函数,echo $ame 变成函数里赋予的zs
#删掉这个name,重新给它赋予lisi,函数里加个local 锁住 ,echo $name 。成我赋予的值。将函数锁死,跳出这个函数,就会变回原来样。成我赋予的值。加 local 关键字 可以让 变量只在函数中生效 ,不会影响外界环境
函数返回值#
如果使用函数 那么$? 使用就会 受限
我么可以下使用 return 自定义 $? 的返回值,来判断 函数中的 命令
#不加return 运行脚本
#给user赋个值,运行脚本,echo 为0 运行成功
#给user 重新赋个值,运行脚本,echo $? 还是为0,这导致我无法判断我的运行脚本是否正确,所以加个return,返回值。我才能确定我的脚本是否运行成功
# 给 root 下面赋予个返回值
#显示5,是我赋予的值,所以脚本运行成功
#切换个用户,显示1.也是我赋予的值,运行成功
函数的传递参数#
需要注意
脚本的 $1 $2
函数的 $1 $2
是没有关系的
函数的 $ 1 $2 是指跟在函数后面的值
拓展递归 函数#
函数 本质 --->程序
无限的开自己 死循环 (病毒)
阶乘#
函数版#
#
专门存放函数的文件
要使用的时候
. 绝对路径的文件名 放在脚本的最前面
eval 多次运算
数组
数字的集合称为数组
关联数组 下标是有含义的字符串
-
变量:存储单个元素的内存空间 一一对应
-
数组:存储多个元素的连续的内存空间,相当于多个变量的集合 一对多
数组名和索引 下标
-
索引的编号从0开始,属于数值索引
-
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持
-
bash的数组支持稀疏格式(索引不连续)
数组的使用#
一定要先声明数组
declare -a 普通数组 (不需要手动说明,系统帮你声明)
关联数组 一定要手动声明
declare -A 数组名
定义数组#
1、数组名 =(数组值 中间用空格隔开)
2、数组名[下标1]=值1
数组名[下标2]=值2
数组名[下标n]=值n
#想看里面几个元素
#
单个调用
echo ${a[0} 调用第一个值
echo ${a[1} 调用第二个值
.....................................
echo ${a[n} 调用第n个值
全部调用
echo ${a[@]}
echo ${a[*]}
显示数组的值的个数
echo ${#a[@]}
echo ${#a[*]}
#显示所有下标
数组替换#
删除数组#
unset 数组名 将整个数组删除
unset a[0] 只删除第一个
#删除整个
#删除单个
关联数组#
declare -A f #声明数组
f[name]=smiitg
f[address]=wdc
f[p]=3
echo ${f[name]}
echo ${f[address]}
echo ${f[p]}
数组切片#
a=(10 20 30 40 50)
echo ${a[@]:2:2}
遍历数组#
随机生成一个数#
#
#
#随机生成的数 回有相同的。为了杜绝这种情况发生。给它先生成个随机数,后续生成相同的不要,不相同存放在需要的数字里
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?