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}

遍历数组


随机生成一个数





#随机生成的数 回有相同的。为了杜绝这种情况发生。给它先生成个随机数,后续生成相同的不要,不相同存放在需要的数字里



                
            
        
浙公网安备 33010602011771号