**
shell的课程大纲
**
01)Shell基本概述
02)Shell变量定义
03)Shell数值运算
04)Shell流程控制
05)Shell循环语句
06)Shell数组函数
07)Shell内置命令
08)Shell正则表达式
01) shell的基本概述
[root@web01 ~]# echo $-
himBH
h hashall 缓存,命令的路径
i 交互式shell
m 监控
B 大括号扩展
H history
[root@web01 ~]# vim test.sh
#!/bin/bash
echo $-
[root@web01 ~]# sh test.sh
hB
[root@web01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
02) shell的种类
[root@web01 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@web01 ~]# echo $SHELL
/bin/bash
3. 什么是Shell脚本 ?
01)系统的命令堆积在一起,按照顺序执行。
02)特定的格式 + 特定的语法 + 系统的命令 = 文件
03)以.sh为结尾的文件
04) 为什么要学习shell
重复性的工作
自动化的脚本
提高工作效率
05) 如何学好shell编程
01)阅读、模仿、阅读、模仿
02)核心:多练-多思考-再练-再思考-坚持如此循环即可
03)掌握Shell脚本的各种常见语法
04)形成自己的脚本开发风格
05)从简单做起,简单判断,简单循环
06)多模仿、多离开参考资料练习、多思考
07)学会分析问题,逐渐形成编程思维
08)编程变量名字规范,采用驼峰语法表示
09)不要拿来主义,特别针对新手
06) 学习Shell编程需要哪些知识 ?
01)对vim编辑器能熟练使用,熟悉SSH终端及".vimrc"等的配置。
02)要有一定的Linux命令基础,至少掌握80个以上Linux常用命令并能熟练使用。
03)要熟练掌握Linux正则表达式以及三剑客命令(grep、sed、awk)。
04)熟悉常见的Linux网络服务部署、优化、日志分析及排错。
07) Shell脚本能做什么 ?
01)基础配置:系统初始化操作、系统更新、内核调整、网络、时区、SSH优化等。
02)安装程序:LNMP、LAMP、MySQL、Nginx、Redis等。
03)配置变更:Nginx Conf、PHP Conf、MySQL Conf、Redis Conf等。
04)业务部署:Shell配合Git、Jenkins实现自动化部署PHP、Java代码,以及代码回滚。
05)日常备份:MySQL全备 + 增量 + binlog + crond + Shell脚本备份等。
06)信息采集:Zabbix + Shell: 对硬件、系统、服务、网络的监控等。
07)日志分析:ELK:取值->排序->去重->统计->分析等。
08)服务扩容/缩容:Zabbix + Shell
扩容: 监控服务器cpu, 如cpu负载持续80% + 触发动作(脚本)
脚本: 调用api开通云主机->初始化环境->加入集群->对外提供访问
缩容: 监控服务器cpu使用率20%->判断有多少web节点->判断是否超过预设->缩减到对应的预设状态->变更负载的配置
01)脚本放在放在统一的目录
mkdir -p /shell/
02)推荐使用vim编辑器编辑脚本(高亮显示)
03)以.sh为扩展名
04)规范的Shell脚本第一行会指出由哪个程序(解释器)来执行脚本中的内容。
#!/bin/bash 或 #!/bin/sh #如不指定Shell,默认以bash执行。
05)开头的"#!“称为幻数,在执行Shell脚本的时候,内核会根据”#!"后的解释器来确定使用哪个程序解释脚本中的内容。注意:这一行必须在每个脚本顶端的第一行,如果不是第一行则为脚本注释行。
06)附带作者及版权信息。
07)脚本注释:在Shell脚本中,跟在"#"后面的内容表示注释。注释部分不会被执行,仅给人看。注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯,方便自己与他人。最好不用中文注释,因为在不同字符集的系统会出现乱码。
08)成对的符号一次书写完成。
09)循环的格式一次书写完成。
shell 的执行方式
[root@web01 shell]# vim test.sh
#!/bin/bash
pwd
#新打开一个shell窗口执行,不需要执行权限
[root@web01 shell]# sh test.sh
/shell
[root@web01 shell]# bash test.sh
/shell
#使用绝对路径或者相对路径执行,需要执行权限。另起一个窗口
[root@web01 shell]# /shell/test.sh
-bash: /shell/test.sh: Permission denied
[root@web01 shell]# ./test.sh
-bash: ./test.sh: Permission denied
[root@web01 shell]# chmod +x ./test.sh
[root@web01 shell]# /shell/test.sh
/shell
[root@web01 shell]# ./test.sh
/shell
将脚本内容调用到当前窗口执行
[root@web01 shell]# vim test.sh
#!/bin/bash
ping baidu.com