一、Shell脚本
脚本:可以执行文件,运行后可以实现某种功能(命令的堆积,非交互)
规范Shell脚本的一般组成
#! 环境声明(Sha-Bang)
# 注释文本
可执行代码
二、简单写一个shell脚本,按照国际惯例,还是输出hello world
[[email protected] ~]# vim /root/1.sh
#!/bin/bash
echo hello world
[[email protected] ~]# chmod +x /root/1.sh
[[email protected] ~]# /root/1.sh
管道传递
使用 | 管道操作
– 将前一条命令的标准输出交给后一条命令处理
三、重定向输出
>:只收集前面命令的正确输出
2>:只收集前面命令的错误输出
&>:收集前面命令的错误与正确输出
/dev/null #Linux黑洞设备,专用于收集不要的输出结果
变量:为了增加脚本的适用环境的能力,增加脚本的灵活度,方便。
变量: 容器,以不变的名称,储存变化的值
变量名=变化的值
使用变量: $变量名
为了降低脚本使用难度,可以产生交互
read :可以产生交互,将键盘输入的内容赋值给变量
什么是变量
以不变的名称存放的可能会变化的值
– 变量名=变量值
– 方便以固定名称重复使用某个值
– 提高对任务需求、运行环境变化的适应能力
设置变量时的注意事项
– 若指定的变量名已存在,相当于为此变量重新赋值
– 等号两边不要有空格
– 变量名由字母/数字/下划线组成,区分大小写
– 变量名不能以数字开头,不要使用关键字和特殊字符
基本格式
– 引用变量值:$变量名
– 查看变量值:echo $变量名、echo ${变量名}
变量的种类
位置变量
在执行脚本时提供的命令行参数(非交互式传值)
预定义变量
用来保存脚本程序的执行信息
– 直接使用这些变量
– 不能直接为这些变量赋值
$# 已加载的位置变量的个数
$* 所有位置变量的值
$? 程序退出后的状态值,0表示正常,其他值异常
$() :将命令的输出结果,作为参数
常用的测试选项
检查文件状态
-e:文档存在为真
-d:文档存在且为目录为真
-f:文档存在且为文件为真
-r:文档存在且有读取权限为真
-w:文档存在且有写入权限为真
-x:文档存在且有执行权限为真
比较整数大小(带e都有等于二字,g代表大于,l代表小于)
-gt:大于
-ge:大于等于
-eq:等于
-ne:不等于
-lt:小于
-le:小于等于
字符串比对
== :相等
!=:不相等
for循环结构
循环结构:将反复执行的语句,循环去执行
for 变量名 in 值列表
do
命令序列
done