目录
Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 常见的 Shell 解释器程序有很多种,使用不同的 Shell 时,其内部指令、命令行提示符 等方面会存在一些区别。
通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作
脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器,其他类型的解释器如#!/bin/python #!/bin/expect
注释信息:以#开头的语句表示为注释信息
可执行语句:比如echo命令用于输出“ ”之间的字符串
?
顺序执行:程序按从上到下顺序执行
选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
循环执行:程序执行过程中需要重复执行多次某段语句(已知次数 已知条件 死循环)
1.指定路径去执行文件(需要有执行权限)
2.指定shell解释器去执行(不需要权限)
3.source和 .?执行 (不需要权限)
使用前两种方式执行脚本,会开启 子bash去执行脚本。
使用source和 .?执行脚本会影响当前的bash环境。
脚本错误种类
命令错误:命令出错不会影响接下来的命令继续
语法错误:会影响接下来的命令继续
逻辑错误:只能自己去筛查代码的正确
检查脚本错误
检查语法错误:bash -n 脚本名称 (不在当前目录下加绝对路径) ? ?
检查逻辑错误:bash -x 脚本名称 (不在当前目录下加绝对路径) ? ?
总结:脚本错误常见的有三种区别
语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的
命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察
逻辑错误:只能使用 bash -x 进行
?
set -e 写在脚本前面,一旦报错,立刻停止
set -u?写在脚本前面,当变量不存在是,立刻停止
选项 | 作用 |
-n | 不追加换行 |
-e | \b?? ?退格 |
\c?? ?抑制更多的输出 | |
\n?? ?换行 | |
\t?? ?横向制表符 | |
\v?? ?纵向制表符 |
交互式硬件设备:
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | > | 将输出结果保存到指定的文件(覆盖原有内容) |
重定向输出 | >> | 将输出结果换行添加在文件尾部 |
重定向错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
重定向错误输出 | 2>> | 将错误信息追加到指定的文件中 |
混合输出 | &> | 将标准输出、标准错误的内容保存到同一个文件中 |