【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】

文章目录

    • shell 编程-函数
    • 调用函数
    • local 函数局部变量
    • return: 返回结果并退出函数
    • exit 返回值
    • 函数总结
    • 取消 定义函数 unset + 函数
    • 定义函数脚本 source
    • 函数 传参 重点
    • shell 编程-数组
    • 定意数组方法 普通数组
    • 关联数组 下标手动指定
    • 查看看所有的值,所有的下标
    • 疑难点 shell数组中"*" 和 "@" 区别
    • 正则表达式RE
    • No.1 正则表达式基本元字符
    • No.2正则表达式拓展元字符
    • 正则判断

shell 编程-函数

功能函数
函数 创建的过程 就是一个对功能代码封装的过程
完成特定功能的代码片段
函数必须先定义才能使用
优点:避免重复的代码

定义函数—怎么写函数脚本,如何定义
调用函数— 怎么使用函数,本地调用,2。通过其他脚本调用
取消函数---- unset func_name
函数传参----和脚本传参类似

命名空间:在shell语言中函数的命名空间是函数内和函数外定义变量是一样的,函数内外不能赋值同样名字的变量

#变量:如果在同一个命名空间可以用,如果不再同一个命名空间就不能用
#函数变量使用的范围:默认,函数里的变量会在函数外面生效
#函数变量如果不让在其他空间用使用:local 分开

脚本案例;
#!/usr/bin/bash
a=10
var() {
echo $a
#local a
a=20
echo $a
}
var #调用函数
echo $a

【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第1张图片

调用函数

【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第2张图片

local 函数局部变量

变量名称 #变量只在函数内生效。local 局部变量 只变量 函数标签内的 不会影响外面
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第3张图片

return: 返回结果并退出函数

返回值:return value:#value不能超过0-255,是函数里面函数最后一条执行命令的返回值,默认返回值是由这条命令执行结果确定的.
return 结束函数 并返回一个值 继续执行 函数外面的代码
脚本案例
#!/usr/bin/bash
func(){
echo “hello”
return 250 #函数返回值
}
func
#echo $? #返回的是函数的返回值
if [ $? -eq 250 ];then
echo “成功”
else
echo “失败”
fi
图片解答
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第4张图片

exit 返回值

会 直接退出脚本【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第5张图片

函数总结

函数 函数调用
函数外面 全局变量 自己定义的值
local 局部变量 只变量 函数标签内的 不会影响外面
return 结束函数 并返回一个值 继续执行 函数外面的代码
exit 返回值 直接退出

【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第6张图片

取消 定义函数 unset + 函数

函数名 function_name,这就是你将使用它从其他地方在你的脚本调用。

取消函数
脚本如下 可以自定义
#!/bin/bash
fun () {
echo “hello”
}
fun
unset fun #取消函数
fun
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第7张图片

定义函数脚本 source

source 调用 子文件 可以把写的函数写到子文件

一般子文件里面 都是写函数,不会去写其他,要不然调用的时候 会被显示
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第8张图片
source 调用 子文件 可以把写的函数写到子文件
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第9张图片
测试结果
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第10张图片

函数 传参 重点

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 位置参数来进行传参的,$1表示第一个参数,$2表示第二个参数…
自己理解;函数传参 自己理解 函数内部打印是按照位置打印
你在外面输入 改变位置 他也是按照内部位置来进行打印
脚本案例;
[root@linux-server script]# vim fun04.sh
fun() {
echo $[$1*$2*$3]
}
fun $1 $2 $3
[root@linux-server script]# bash fun04.sh 1 3 5
15
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第11张图片
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第12张图片

shell 编程-数组

什么是数组?
数组也是一种变量,常规变量只能保存一个值,数组可以保存多个值

#普通数组:只能用整数作为数组的索引–0 下标
#关联数组:可以使用字符串作为数组的索引
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第13张图片

定意数组方法 普通数组

第一种方法 定义 数组 1 简单类
如何去定义一个数组 a=(123 456 789 )
在这里插入图片描述
如何去调用一个数组 echo $ {a[0]} 调用数组123
如何去调用一个数组 echo $ {a[1]} 调用数组123
如何去调用一个数组 echo $ {a[3]} 调用数组123
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第14张图片
第二种方法 定义 数组
declare -a b=(123 456 789)
如何去调用一个数组 echo $ {b[0]} 调用数组123
如何去调用一个数组 echo $ {b[1]} 调用数组123
如何去调用一个数组 echo $ {b[3]} 调用数组123
只限制语 普通数组
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第15张图片

关联数组 下标手动指定

先去定义 数组
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第16张图片
插入数组值
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第17张图片
修改数组值
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第18张图片

查看看所有的值,所有的下标

root@linux-server script]# aa=(haha heihei baibai)
[root@linux-server script]# echo ${aa[0]} #访问数组中的第一个元素
[root@linux-server script]# echo ${aa[@]} #访问数组中所有的元素 等同与echo ${aa[*]}
[root@linux-server script]# echo ${#aa[@]} #统计元素的个数
[root@linux-server script]# echo ${!aa[@]} #打印数组的所有索引

普通数组 关联数组 同样 实用
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第19张图片
脚本测试
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第20张图片

疑难点 shell数组中"*" 和 “@” 区别

关于在shell脚本中数组变量中 “*”跟 “@” 区别
1.当变量加上"" 会当成一串字符串处理.
2.@当变量加上"" 依然当做数组处理.
3.在没有加上"" 的情况下效果是一样的数组
@
*
特点记忆方法 @与
很相似 ,加上双引号“”漏真形
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第21张图片

正则表达式RE

1.正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
2.在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,#元字符是最重要的概念。

#正则表达式分为:
正则表达式基本元字符
正则表达式拓展元字符

元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

No.1 正则表达式基本元字符

【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第22张图片
自己理解的
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第23张图片

No.2正则表达式拓展元字符

【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第24张图片

正则判断

[root@linux-server ~]# num1=1
#运用正则,判断需要[[ ]]
[root@linux-server ~]# [[ n u m 1 =   [ 0 − 9 ] + num1 =~ ^[0-9]+ num1= [09]+ ]] && echo “yes” || echo “no”
yes
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第25张图片

#注意:在[]内表示取反,在[]外表示以什么开头
[root@linux-server ~]# num3=1b1
[root@linux-server ~]# [[ n u m 3 =   [ 0 − 9 ] + num3 =~ ^[0-9]+ num3= [09]+ ]] && echo “yes” || echo “no”
no

[root@linux-server ~]# num=1.6
[root@linux-server ~]# [[ KaTeX parse error: Can't use function '\.' in math mode at position 14: num =~ ^[0-9]\̲.̲[0-9]+ || n u m =   [ 0 − 9 ] + num =~ ^[0-9]+ num= [09]+ ]] && echo “yes” || echo “no” //输入的只能是数字(包括小数)
yes
【shell 编程-函数 调用 变量 取消】【函数总结】【定义函数脚本 source】【函数 传参 重点】【shell 编程-数组 小俩件】【正则表达式RE】_第26张图片

你可能感兴趣的:(云计算方向二,shell)