欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

【千锋Linux】Shell脚本入门全套教程(103集) 视频教程 脚本 script 有大用 有大大用 有大大大用

https://www.y2b.com/watch?v=nyF_QBS5cQA&list=PLwDQt7s1o9J4FMviSY4p5rhC43kBPvJvO  

【千锋Linux】Shell脚本入门全套教程(103集)

接下来播放:千锋Linux教程:99 项目实战 多机部署lnmp

【千锋Linux】Shell脚本入门全套教程(103集)98 / 10398 / 103

 

1    千锋Linux教程:1 Shell 能做什么?(上) 

 

2    千锋Linux教程:2 Shell 能做什么?(下) 

 

3    千锋Linux教程:3 C Java Python Shell 执行方式对比(上) 

 

4    千锋Linux教程:4 C Java Python Shell 执行方式对比(下) 

 

5    千锋Linux教程:5 Bash中调用python Expect 

 

6    千锋Linux教程:6 Shell特性 Login Nologin 

 

7    千锋Linux教程:7 Shell特性 Jobs Redirection 

 

8    千锋Linux教程:8 Shell特性 命令排序 

 

9    千锋Linux教程:9 Shell特性 元字符 

 

10 9:56 9:56  千锋Linux教程:10 Echo 颜色输出文本 

 

11    千锋Linux教程:11 变量 脚本中使用变量 

 

12    千锋Linux教程:12 变量 环境及自定义变量 

 

13    千锋Linux教程:13 变量 位置及预定义变量实战 

 

14    千锋Linux教程:14 变量 的赋值方式 

 

15    千锋Linux教程:15 变量 的运算 整数小数 

 

16    千锋Linux教程:16 变量 内容的删除 替换 替代 

 

17    千锋Linux教程:17 变量 I++ ++i 

 

18    千锋Linux教程:18 Shell脚中各种奇怪的符号 

 

19    千锋Linux教程:19 条件测试概述 

 

20    千锋Linux教程:20 条件测试 文件测试 

 

21    千锋Linux教程:21 条件测试 内存磁盘使用告警 

 

22    千锋Linux教程:22 条件测试 按套路出牌 创建用户 

 

23    千锋Linux教程:23 条件测试 不按套路出牌 创建用户 

 

24    千锋Linux教程:24 Case 多系统配置yum源 

 

25    千锋Linux教程:25 Case 删除用户判断 

 

26    千锋Linux教程:26 Case 实现jump Server 上 

 

27    千锋Linux教程:27 Case 实现jump Server 下 

 

28    千锋Linux教程:28 Case 实现简单的系统工具箱 

 

29    千锋Linux教程:29 If条件判断 安装apache 

 

30    千锋Linux教程:30 If条件判断 安装apache 

 

31    千锋Linux教程:31 If条件判断 多系统配置yum源 

 

32    千锋Linux教程:32 If条件判断 作业解析 

 

33    千锋Linux教程:33 For 空行的秘密 

 

34    千锋Linux教程:34 For 实现批量主机ping探测 

 

35    千锋Linux教程:35 For 实现批量用户创建 

 

36    千锋Linux教程:36 For 实现文件中批量用户创建 

 

37    千锋Linux教程:37 For 实现批量远程主机ssh配置 

 

38    千锋Linux教程:38 While 实现批量用户创建 

 

39    千锋Linux教程:39 While Until 测试远程主机连接 

 

40    千锋Linux教程:40 For While Until 终极对决 

 

41    千锋Linux教程:41 Fd和命名管道实现shell并发控制 

 

42    千锋Linux教程:42 Shell 并发控制项目实战 

 

43    千锋Linux教程:43 For 实现批量主机密码修改 

 

44    千锋Linux教程:44 Expect 实现scp非交互传输文件 

 

45    千锋Linux教程:46 Expect 实现ssh非交互登录 

 

46    千锋Linux教程:45 Expect 实现批量主机公钥推送 

 

47    千锋Linux教程:47 Array 数组的基本概念 

Shell数组变量

========================================================

普通数组:只能使用整数作为数组索引

关联数组,可以使用字符串作为数组索引

一、 普通数组

定义数组:

方法一:一次赋一个值

数组名[下标]=变量值

# array1[0]=pear

# array1[ 1]=apple

# array1[2 ]=orange

# array1[3]=peach

方法二: -次赋多个值

# array2=(tom jack alice) 

# array3=(`cat /etc/passwd`)  希望是将该文件中的每-一个行作为一个元素赋值给数组array3,,,可能有分隔符会导致不准,我们可以重新定义分隔符

# array4=( `Is /var/ftp/Shel/for* `)

# array5=(tom jack alice "bash shell")

# colors=($red $blue $green $recolor)

# array5=(1 2 3 4 5 6 7 "Iinux shell" [20]=puppet)   #这里 puppet 的索引是20,,前面几个的索引,是从0开始的,中间的索引跳过去了

image.png




下图是数组示例

image.png

 

普通数组示例

root@tianyun scripts ]# books=(linux shell awk openstack docker )

root@tianyun scripts]# echo ${books[3]}

openstack

root@tianyun scripts]# echo ${books [4]}

docker

root@tianyun scripts]#|



关联数组需要申明,shell默认不支持关联数组

定义关联数组:

申明关联数组变量

# declare -A ass_array1     # -A   ,,大A 是申明关联数组  必须要先声明

# declare -A ass_array2

方法一: 一次赋一个值

数组名[索引]=变量值

# ass_array1[index1f=pear

# ass_array1[index2]=apple

# ass_array1[index3]= orange

# ass_array1[index4]=peach

方法二: 一次赋多个值

# ass_ array2=([index1]=tom [index2]=jack [index3]= alice [index4]="bash shell)

image.png

image.png

定义普通数组:

# declare -a array1     # -a ,,小a 是申明普通数组,,,  可以不声明

# declare -a array2


查看数组,

# declare'a

declare -a array1=''([0]="pear" [1]= "apple" [2]="orange" [3]="peach")'

declare -a array2='([0]="tom" [1]="jack" [2]="alice")'


访问数组元数:

# echo ${array1[0]} 访问数组中的第一个元数

# echo ${array1[@]} 访问数组中所有元数等同于echo ${array1[*]}  ,无论普通数组还是关联数组,只能看到值,看不到键

# echo ${#array1[@]} 统计数组元数的个数   井号用在普通变量上是看长度,用在数组里是看个数

# echo ${!array2[@]} 获取数组元数的所有的索引    # array2=(aa bb cc)   # echo ${!array2[@]}     #结果为 0 1 2 

# echo ${array1[@]:1}从数组 下标1开始    ,只有普通数组才可以切片操作,关联数组不能切片操作,因为关联数组没有数字索引

        类似于如下的字符中变量的示例

        [ root@tianyun scripts]# name=tianyun

        [ root@tianyun scripts]# echo ${niame:2}   #从索引2到最后,切片操作

        anyun

        [ root@tianyun scripts]# echo ${name:2:2}   $ #从索引2开始,取2个,切片操作

        an


# echo ${array1[@]:1:2}从数组下标1开始,访问两个元素




image.png



查看数组:

# declare -A

declare -A ass_array1='([index4]="peach" [index1]="pear" [index2]="apple" [index3]="orange")'

declare -A ass_array2='([index4]= "bash shell" [index1]= "tom" [index2]="jack" [index3]="alice")'

访问数组元数:

# echo ${ass_array2[index2]}  访问数组中的第二个元数

# echo ${ass_array2[@]}  访问数组中所有元数等同于echo ${array1[*]}

# echo ${ #ass_array2[@]}  获得数组元数的个数

# echo ${!ass_array2[@]}  获得数组元数的索引

逼历数组:

方法一:通过数组元数的索引进行逼历


image.png

[root@tianyun scripts]# infol=([name]tianyun [sex]male[age]36 [height]170 [skill]cloud)  #这个程序认为是一个普通数组


关联数组示例      关联数组,似乎在macos情况下有些运行不正常

[root@tianyun scripts]# declare -A info1

[root@tianyun scripts]# info1=([name]=tianyun [sex]=male [age]=36 [height]=170 [skill]=cloud)

[root@tianyun scripts]# echo ${info1[age]}

36


没有申明info2 ,,此时  echo ${info2[age]} 结果是不对的,,,,所以关联数组必须要首先申明一下

[root@tianyun scripts]# info2=([name ]=tianyun [sex]=male [age]=36 [height]=170 [skill]=cloud) .

[root@tianyun scripts]# echo ${info2[age]}

cloud

[root@tianyun scripts]#



root@tianyun scripts]# declare --help   # declare -a (普通数组) ,,,# declare -i (数字) ,,, 这些都无须声明,,,,,,但是 declare -A (关联数组) 需要声明

-bash: declare: --: invalid option

declare: usage: declare [ -aAfFgilrtux] [-p] [name [=value] ...]

[root@tianyun scripts]#



root@tianyun scripts]# declare -a   #declare -a ,查看 shell 当中所有的 普通数组的变量

declare -a BASH_ ARGC='() '

declare -a BASH_ _ARGV='()'

declare -a BASH_ _LINENO='()'

declare -ar BASH_ REMATCH='()'

declare -a BASH_ SOURCE='()'

declare -ar BASH_ VERSINFO='([0]="4" [1]="2" [2]="46" [3]="1" [4]=" release" [5]="x86

_64- redhat-linux-gnu") '

declare -a DIRSTACK=' () '

declare -a FUNCNAME='() '

declare -a GROUPS='( )

declare -a PIPESTATUS='([0]="2") '

declare -a books='([0]="linux" [1]="shell" [2]=" awk" [3]=" openstack" [4]=" docker")'

declare -a inf1='([0]=" [name]tianyun" [1]=" [sex]male" [2]=" [age]36" [3]=" [height ]17

0" [4]=" [skill]cloud")'

declare -a info='( []=" [name]tianyun" [1]=" [sex]male" [2]=" [age]36" [3]=" [height]17

0" [4]="[skill]cloud") '

declare -a info2='([0]="cloud") '

[root@tianyun scripts]#


root@tianyun scripts]# declare -A | grep  info         #同理,declare -A ,查看 shell 当中所有的 关联数组的变量     

...... ......

declare -A infol='( [name ]="tianyun" [height]="170" [age]="36" [skill]=" cloud" [sex]="male" )'


[ rootatianyun scripts]# echo ${!books[@]}    #获取数组的键,是普通数组的键

0 1 2 3 4

root@tianyun scripts]# echo ${!info1[@]}    #也是获取数组的键,是关联数组的键

name height age skill sex

root@tianyun scripts]#

root@tianyun scripts]# echo ${books[@]:2}        #从2开始到最后,切片操作

awk openstack docke r

[root@tianyun scripts]# echo ${books[@]:2:2}      #从2开始限2个,切片操作

awk openstack

[ rootatianyun scripts]#


image.png


48    千锋Linux教程:48 Array 数组的赋值及遍历 

 

49    千锋Linux教程:49 Array 实现性别统计 

 

50    千锋Linux教程:50 Array 统计不同类型shell的数量 

 

51    千锋Linux教程:51 Array 统计tcp连接状态数量 

 

52    千锋Linux教程:52 Funtion 函数的定义及调用 

 

53    千锋Linux教程:53 Funtion 函数的返回 Return Out 

 

54 7:06 7:06  千锋Linux教程:54 Funtion 函数的返回 Return Out 

 

55    千锋Linux教程:55 函数传参 位置参数 

 

56    千锋Linux教程:56 函数传参 数组变量 

 

57    千锋Linux教程:57 函数返回 输出数组变量 上 

 

58    千锋Linux教程:58 函数返回 输出数组变量 下 

 

59    千锋Linux教程:59 shell内置命令 break continue 

 

60    千锋Linux教程:60 Shell内置命令 Shift 

 

61    千锋Linux教程:61 正则表达式概览 Re 

 

62    千锋Linux教程:62 正则表达则元字符详解 

 

63    千锋Linux教程:63 正则表达则元字符详解 

 

64    千锋Linux教程:64 正则表达则元字符详解 

 

65    千锋Linux教程:65 正则表达式 Grep使用实战 

 

66    千锋Linux教程:66 正则表达式 Grep使用实战 

 

67    千锋Linux教程:67 流编辑器sed技术概览 

 

68    千锋Linux教程:68 流编辑器sed 定址 

 

69    千锋Linux教程:69 流编辑器sed命令 P D S 

 

70    千锋Linux教程:70 流编辑器sed命令 R W A I C 及暂存空间 

 

71    千锋Linux教程:71 流编辑器sed 编辑文件实战 

 

72    千锋Linux教程:72 Awk工作原理概览 

 

73    千锋Linux教程:73 Awk内部变量 Fs Ofs Rs Ors Nr Fnr 

 

74    千锋Linux教程:74 Awk模式详解 正则 条件 

 

75    千锋Linux教程:75 Awk模式详解 算术 逻辑 范围 

 

76    千锋Linux教程:76 Awk脚本编程 If While For 

 

77    千锋Linux教程:77 脚本编程实战 数组 

 

78    千锋Linux教程:78 脚本编程实战 数组分析nginx apache 日志 

 

79    千锋Linux教程:79 Awk使用外部变量的三种方法 

 

80    千锋Linux教程:80 实战项目 收集系统信息用于分析性能瓶颈 

 

81    千锋Linux教程:81 实战项目 收集系统信息用于分析性能瓶颈 

 

82    千锋Linux教程:82 实战项目 收集系统信息用于分析性能瓶颈 

 

83    千锋Linux教程:83 实战项目 收集系统信息用于分析性能瓶颈 

 

84    千锋Linux教程:84 实战项目 收集系统信息用于分析性能瓶颈 

 

85    千锋Linux教程:85 实战项目 判断主机存活三次机会 

 

86   千锋Linux教程:86 实战项目 判断主机存活三次机会 

 

87   千锋Linux教程:87 实战项目 判断主机存活三次机会 

 

88    千锋Linux教程:88 实战项目 Nginx日志分析项目实战 

 

89    千锋Linux教程:89 实战项目 Nginx日志分析项目实战 

 

90    千锋Linux教程:90 实战项目 Nginx日志分析项目实战 

 

91    千锋Linux教程:91 实战项目 Nginx日志分析项目实战 

 

92    千锋Linux教程:92 实战项目 保留最近n天的备份文件 

 

93    千锋Linux教程:93 实战项目 保留最近n天的备份文件 

 

94    千锋Linux教程:94 项目实战 多机mysql部署 

 

95    千锋Linux教程:95 项目实战 多机mysql部署 

 

96    千锋Linux教程:96 项目实战 多机mysql部署 

 

97    千锋Linux教程:97 项目实战 多机部署lnmp 

 

98   千锋Linux教程:98 项目实战 多机部署lnmp 

 

99    千锋Linux教程:99 项目实战 多机部署lnmp 

 

100    千锋Linux教程:100 项目实战 多机部署lnmp 

 

101    千锋Linux教程:101 项目实战 Tcp连接状态收集(配合zabbix) 

 

102    千锋Linux教程:102 项目实战 Mysql状态信息收集(配合zabbix) 

 

103    千锋Linux教程:103 项目实战 内存信息收集(配合zabbix) 


普通分类: