shell脚本
日常运维工作大部分是一些繁琐的重复的工作,每天80%的工作就是重复干昨天的事,而且工作量还比较大,因此运维有两个选择:
- 自己搞定一切
- 让机器搞定一切
学习shell分为几个阶段:
- 能看懂shell脚本
- 能改shell脚本
- 能自己写shell脚本
- 能优化shell脚本
shell介绍
什么是shell
shell是一个程序,采用c语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。通过一个图表来查看一下shell的作用:
kernel:为软件服务,接收用户或软件指令驱动硬件,完成工作,只能识别01
shell:命令解释器,会将用户的高级语言转化为二进制
user:用户接口,对接用户
shell的功能
- 命令行解释功能
- 启动程序
- 输入输出重定向
- 管道连接
- 文件名置换(echo/*)
- 变量维护
- 环境控制
- shell编程
shell语法
shell脚本就是将完成一个任务的所有命令按照执行先后的顺序,自上而下写入到一个文本文件中,然后给予执行权限
如何书写一个shell脚本
shell脚本命名:
名字要有意义,最好不要用a、b、c、1、2、3这种方式命名;虽然linux系统中,文件没有扩展名的概念,仍然建议用.sh结尾;名字不要太长,最好能30个自己以内解决
shell脚本格式:
- shell脚本开头必须指定脚本运行环境,以 #! 这个特殊符号组合来组成。如: #!/bin/bash 指定该脚本是运行解析有/bin/bash来完成的
代表注释
在脚本中加上:
#Author: xxx 作者 #Created Time: xxxx/xx/xx xx:xx 创建时间 #Release: xx 脚本版本 #Script Description: xxxxxx 脚本描述
脚本组成
解释环境:也可以这样写:#! /usr/bin/env bash |python|perl
注释说明
执行代码
如何运行shell脚本
给执行权限
chmod 700 filename + ./xxx.sh
解释器直接运行,不需要给权限
sh xxx.sh
shell中的特殊符号
注:
!表示上个指令,!!表示上上个指令,也可以通过history查看历史命令的序号,通过!+序号来执行历史命令
shell中的管道运用
| 管道符在shell中是使用最多的,很多组合命令都需要通过组合命令来完成输出。管道符其实就是下一个命令对上一个命令的输出做处理
重定向
expr
expr + ' ' + int + ' ' + x + ' ' + int,可以进行数学运算,双小括号(())也可以做运算
linux中的计算器:bc,默认也不支持小数点,要加上"scale=2",表示小数点后两位
退出脚本
exit NUM: 退出脚本,释放系统资源,NUM代表一个整数,代表返回值(1-255)