前言
之前的 Linux之Shell脚本初识 只是介绍了如何实现批处理的功能,但为了让Shell脚本程序更好地满足用户的一些实时需求,以便灵活完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。
接收用户参数的脚本
假设,我们编写了这么一个脚本:
1 |
|
运行结果:
- 可以看到,我们在脚本后面跟了几个参数,分别是英文的1~6
- 会看到脚本中,$n 就是取第n个参数,脚本名为第0个参数。
- $# 可以统计参数个数,$* 将所有参数列出(命令通配符)
条件测试
Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值。
注意:条件表达式两边都有一个空格
按照测试对象来划分,条件测试语句可以分为4种:
- 文件测试语句;
- 逻辑测试语句;
- 整数值比较语句;
- 字符串比较语句。
下面我们就针对以上四种情况进行介绍:
文件测试语句
实例:
- 我们使用文件测试语句来判断/etc/passwd 是否为一个文件
- 然后通过Shell解释器的内设 $? 变量显示上一条命令执行后的返回值。
- 如果返回值为0,则目录存在;如果返回值为非零的值,则意味着目录不存在。
逻辑测试
逻辑与:在Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令
逻辑或:在Linux系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令
逻辑非:第三种逻辑语句是“非”,在Linux系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值。也就是说,如果原本测试的结果是正确的,则将其变成错误的;原本测试错误的结果则将其变成正确的。
综合实例:
从左到右执行推断:
- 条件测试里面是逻辑非部分,得出结果是False(因为此时的USER就是 root)
- 接下来遇到逻辑与,我们知道前面是False,证明后面的东西不会输出
- 再往右看下去,是逻辑或:当前面命令执行失败时,执行||后面的命令。
于是,输出root 。
整数值比较
整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作。
字符串比较
字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即判断内容是否为空值)