shell介绍
-
自动化可以通过两种方式来实现: 工具 和 脚本
-
常见的脚本有两种:shell脚本、其他脚本, 诸如python脚本等
-
shell 是一个 命令解释器 , shell是位于应用程序和操作系统之间的有效命令翻译工具.
-
shell分为两大类:
- 图形化的shell , 如我们常说的操作系统的桌面
- 命令行的shell
-
查看系统shell类型:
echo $SHELL
-
查看当前系统环境支持的shell :
cat /etc/shells
-
shell手工执行的时候有一个重要的特点:
逐行输入命令, 逐行解释执行
shell脚本的基础知识
- 概念
常用编辑工具 vim vi
命名: 见名知义 - 注释
- 单行注释:除了首行加#不是注释外, 其他在行首加#均表示此行是单行注释
- 多行注释
:<<! ... #这里表示注释掉的内容 !
- 脚本执行
注意: 要修改文件的可执行权限chmod +x script-name.sh
- 强烈推荐的方式: 写完整的路径名:
/bin/bash /path/script-name.sh
- 当前路径下执行脚本:
path/to/script-name.sh 或 ./script-name.sh
- 点 执行:
source script-name.sh 或 . script-name.sh
- 强烈推荐的方式: 写完整的路径名:
- 脚本开发规范
- 命名要见名知义, 脚本后缀是 .sh
- 脚本首行是且必须是
#!/bin/bash
- 第二行开始一般先写脚本的描述信息:
- 脚本名称, 功能, 版本, 作者, 联系信息等
- 注释不推荐中文, 避免不同的操作系统出现中文乱码的问题
- 脚本的执行也是从上到下依次执行, 但是可以通过 &灵活的使其中 部分阻塞式的命令在后台执行
- 代码书写规范
- 成对内容一次写出防止遗漏, 比如 ()等
- [ ]中括号内部的 两端要有空格
- 内部流程控制语句一次性书写完, 再添加内容.
- 通过缩进提高代码的 可读性, 即该有空格的地方要有空格
语法
变量
-
变量 包含变量名 (不变的部分)和变量值 (可变的部分)
-
本地变量:在当前系统的某个环境下才能生效的变量, 作用范围小
本地变量包含两种普通变量、命令变量 (必须掌握)-
普通变量 的定义方式(三种)
- 方式一:
变量名=变量值
变量值必须是一个整体,中间没有特殊字符 - 方式二:
变量名='变量值'
- 方式三:
变量名="变量值"
- 习惯: 数字不加引号、原样输出使用单引号、其他默认加双引号
- 方式一:
-
命令变量 定义有两种方式:
1.方式一:变量名=命令
2.方式二:变量名=$(命令)
-
-
全局变量:在当前系统所有环境都能生效得变量
- 查看全局变量: env 命令查看系统的所有环境变量
- 定义全局变量:
export 变量名=变量值
-
变量查看和取消
查看:"${变量名}"
取消:unset 变量名
和脚本文件有关
符号 | 意义 |
---|---|
$0 | 获取当前执行的shell脚本文件名,包括脚本路径 |
$n | 获取当前执行的shell脚本的第n个参数值,n=1…9,如果n大于9就要用大 括号括起来${10} |
$# | 获取当前shell命令行中参数的总个数 |
$? | 获取执行上一个指令的返回值(0为成功 , 非0为失败) |
字符串精确截取相关
格式: ${变量名:起始位置:截取长度}
#示例代码:
${file:0:5} 从第1个字符开始,截取5个字符
${file::5} 从第1个字符开始,截取5个字符
${file:5:5} 从第6个字符开始,截取5个字符
${file:5} 从第6个字符开始,截取后面所有的字符
${file:0-5} 从倒数第5个字符开始,截取后面所有的字符
${file:0-6:3} 从倒数第6个字符开始,截取之后的3个字符
表达式
- 测试语句形式:
[ 条件表达式 ]
条件成立, 状态返回值是0, 条件不成立, 状态返回值是1
注意:[] 的内部两端与条件表达式之间至少有一个空格 - 条件表达式
-
逻辑表达式:&& 和 ||
-
文件表达式
- -f 判断输入内容是否是一个文件
- -f 判断输入内容是否是一个文件
-