shell 编程
一、shell概括
1.先来简述一下shell的用途
1.shell可以用来自动化系统的初始化工作(update,软件的安装,时区的设置,安全策略...)
2.自动化批量软件部署程序(LAMP/LNMP/Tmcat/LVS/Nginx)
3.管理应用程序(KVM,集群管理)
4.日志分析处理程序(grep/awk)
7.自动化信息采集及监控程序(收集系统/应用状态信息,cpu,Mem,disk,net,apache,MysqL)
2.shell的作用
- 解释执行用户输入的命令
- 输入一条,shell解释一条
- 接盘输入命令,linux就给与响应的方式,称交互
3.shell概念
shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户之间对话,把用户输入的操作系统,然后处理操作系统的输出结结果,输出到屏幕给与用户看到结果
从我们登录linux,所有操作都是交给shell解释
4.什么是shell脚本
当命令或者程序语句写在文件中,我们执行文件,读取其中的带代码,这个程序文件就被称为shell脚本。
在shell脚本总定义多条linux以及循环控制语句,而linux命令一次性执行完毕,执行脚本文件的方式称为非交互式。
- 在window 中.bat 批处理脚本
- 在linux 中 .sh 脚本文件
shebang
#! /bin/bash #shebang
- 以 #!/bin/sh 开头的文件,程序在执行的时候会要调用/bin/sh,也就是bash解释器
- 以#! /usr/bin/python 开头的文件,代表指定python解释器去执行
- 以 #!/usr/bin/env 解释器名称,是一种在不同平台上都能正确找到解释器的方法
./执行脚本 需要chmod +x 权限
sh 文件名
脚本规范
执行shell脚本方式
shell和运维关系
shell脚本语言很适合处理纯文本类型数据,且linux的哲学思想就是一切皆文件,如日志、配置文件、文本、网页文件、大多数都是纯文本类型,因此shell可以方便的进行文本处理,例如强大的文本三剑客(grep、sed、awk)
二、走进shell
1.字符类型
shell语言定义的变量,数据类型默认字符串类型
类型 | 介绍 |
---|---|
弱类型语言 | 在定义变量的时候,不用主动声明改类型 |
强类型语言 | 需要指定变量类型,必须对应的上负责报错 |
centos7支持shell 种类
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
其他脚本语言
运维必会语言:shell、python
因为大量的linux运维工具由python开发的。
变量的作用域
注意:1.每次调用bash /sh这样解释器去执行脚本, 都会开启一个子shell,因此不保留当前shell的变量,通过pstree命令检查进程树
2.调用source或者. 在当前shelll环境加载脚本,因此保留
在linux反引号`
环境变量
环境变量一般指export,用于定义shell的运行环境,保证shell命令正确执行,shell通过环境变量确定登录用户莫、PATH路径、稳健性等能找出linux中各种变量。