shell 编程值循环语句与函数 二

发布时间 2023-11-24 00:14:49作者: citywalk

函数

有些 脚本会反复拿出来用

alias 脚本呢比较复杂

函数 脚本的别名

 

检测系统

 

 

 

 

函数定义

 

 

 

 

函数的定义

函数名 () {

脚本

}

 

function 函数名 () {

 

}

 

function 函数名 {

}

 

如何使用函数

1、定义

2、调用

 

你准备一个只存函数的脚本

函数一定要先定义再使用

 

#运行脚本 用 . (source)不用bash

 

启动httpd成功/失败会提示。

 

 

 

 

函数的变量作用范围

 #先给name赋个值,lisi 。用func函数定义 name=zs,运行这个函数,echo $ame 变成函数里赋予的zs

 #删掉这个name,重新给它赋予lisi,函数里加个local  锁住 ,echo $name 。成我赋予的值。将函数锁死,跳出这个函数,就会变回原来样。成我赋予的值。加 local 关键字 可以让 变量只在函数中生效 ,不会影响外界环境

 

函数返回值

retrun 自定义 返回值  强行返回一个值

 

如果使用函数 那么$? 使用就会 受限

我么可以下使用 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}

 

遍历数组

 

 

 

 

随机生成一个数

 

 

 

 

 

取出数组中的最大值和最小值

 

 

 

 

冒泡排序算法

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