携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情
shell脚本概述
shell脚本的概念
- 将执行的命令按顺序保存到一个文本文件
- 给该文件可执行权限
- 可结合各种shell控制语句以完成更复杂的的操作
shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
shell的作用
命令解释器,“翻译官”
- 介于系统内核与用户之间,负责解释命令行(用户输入相关的指令,shell将指令转化成二进制语言,传递给内核执行)
linux自带的shell文件
检查一下 /etc/shells这个文件,里面就是linux所包含的shell
最常用的就是bash,tcsh,csh,sh,nologin这些shell。这些shell都是依据linux发展者的不同所创造出的不同版本
bash:基准于GNU的框架下发展出的shell
csh:语法优点类似于c语言的shell
tcsh:整合了csh,提供更多功能
sh:已经被bash所替换
nologin:奇怪的shell,这个shell可以让用户无法登录主机
PS:bash(/bin/bash)是目前大多数linux版本采用的默认shell
shell脚本的作用
- 自动化运维
- 批量化重复操作可以编写脚本结合计划任务自动周期运行
- 减轻管理员工作量
- 提高处理文本文件的速度
- 避免配置出错
shell是一个面向字符串的编程语言,可以跟python之类的其他语言配合起来,比如某个复杂的功能使用一个python脚本来实现,然后在shell中调用这个脚本实现较复杂的功能,或者反过来,在python脚本中调用外部的shell脚本来提高自动化的效率,也是可以的
shell 可针对 linux 系统自动化运维和状态监控
python 可 针对 通过APR接口对 应用程序做 数据的收集,统计和分析
强类型编辑语言
- int
- string
- c
- c++
- JAVA
- GO
shell脚本的构成
- 脚本申明(解释器):若第一行为“#!/bin/bash” 或者省略, 表示此行以下的代码语句是通过/bin/bash 程序来解释此行, #!默认解释器。比如#!/usr/bin/python, #!/usr/bin/expect
- 注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行
- 可执行语句(代码块):比如echo命令,用于输出“ ”之间的字符串
命令运行脚本
-
会在脚本的子shell环境中执行脚本中的代码
-
指定绝对路径或者相对路径指定脚本的路径运行,要求脚本文件必须有执行权限 x
- bash
- sh
- source
- .
.和source一样作用的(使用当前shell环境执行脚本里的代码,也就是脚本文件终端二代目或者命令会影响环境)
管道操作 |
将管道符号“|” 左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道符号
xargs 可以把管道符号传递的参数作为对象传递给右边
xxx | 如果管道符号右边一定需要执行对象命令,则管道符号后面一定要有 xarges 命令来传递执行参数
'' 和${} 一样是命令替换的作用
重定向操作
交互式硬件设备
- 标准输入:从该设备接收用户输入的数据
- 标准输出:从改设备向用户输出d饿数据
- 标准错误:通过该设备报告执行出错的数据
- '>'
- '>>'
- 2>
- 2>>