编写Shell脚本
Shell 脚本命令的工作方式有两种:交互式和批处理。
交互式: 用户每输入一条命令就立即执行
批处理: 由用户实现编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令
编写简单的脚本
Shell 脚本文件的名称可以任意,但为了避免被误以为是普通文件,通常将.sh 后缀加上,以表示是一个脚本文件。
第一行: #!是脚本声明,用来告诉系统使用哪种Shell解释器来执行该脚本;
第二行: # 是注释信息,是对脚本功能和某些命令的介绍信息,使自己以后能看懂脚本
第三、四行: 就是平时执行的Linux命令
使用的时候,用 bash 脚本文件名 ,或者 ./+脚本文件名(. /) 运行
其中,用第二种方法会出现报错,提示权限不够,如下图
解决方法如下:
chmod u+x 脚本文件名
./脚本文件名
执行结果:
接收用户的参数
$0 对应的是当前Shell 脚本程序的名称,$#对应的是总共
有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N 个位置的参数值。
判断用户的参数
按照测试对象来划分,条件测试语句可以分为 4 种:
- 文件测试语句;
- 逻辑测试语句;
- 整数值比较语句;
- 字符串比较语句。
下面使用测试语句来判断/etc/sys是否为一个目录类型的文件,然后用Shell解释器的内设$?变量显示上一条命令执行后的返回值。
返回值是0,则目录存在,返回值为非0,则目录不存在
在Shell终端逻辑中“与”的运算符号是 && ,它表示当前的命令执行成功后才会执行它后面的命令,因此可以判断文件是否存在,如果存在则输出Exist
第二种逻辑语句是“或”,运算符为 ||,它表示前面的命令执行失败后才会执行的语句
第三种逻辑语句是“非”,运算符是 !,它表示把条件测试中的判断结果取相反值,即正确变为错误,错误变为正确。
整数比较运算符
整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。因此一定要使用规范的整数比较运算符来进行操作。可用的整数比较运算符如下:
例子:
字符串比较运算符
常见的字符串比较运算符如下