Linux之Shell脚本进阶

前言

之前的 Linux之Shell脚本初识 只是介绍了如何实现批处理的功能,但为了让Shell脚本程序更好地满足用户的一些实时需求,以便灵活完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。

接收用户参数的脚本

假设,我们编写了这么一个脚本:

1
2
3
4
#!/bin/bash
echo "当前脚本名称为$0"
echo "一共有$#个参数,分别是$*。"
echo "第一个参数为$1, 第五个参数是$5。"

运行结果:

  • 可以看到,我们在脚本后面跟了几个参数,分别是英文的1~6
  • 会看到脚本中,$n 就是取第n个参数,脚本名为第0个参数。
  • $# 可以统计参数个数,$* 将所有参数列出(命令通配符)


条件测试

Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值。

注意:条件表达式两边都有一个空格

按照测试对象来划分,条件测试语句可以分为4种:

  • 文件测试语句;
  • 逻辑测试语句;
  • 整数值比较语句;
  • 字符串比较语句。



下面我们就针对以上四种情况进行介绍:

文件测试语句


实例:

  • 我们使用文件测试语句来判断/etc/passwd 是否为一个文件
  • 然后通过Shell解释器的内设 $? 变量显示上一条命令执行后的返回值。
  • 如果返回值为0,则目录存在;如果返回值为非零的值,则意味着目录不存在。

逻辑测试

逻辑与:在Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令

逻辑或:在Linux系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令

逻辑非:第三种逻辑语句是“非”,在Linux系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值。也就是说,如果原本测试的结果是正确的,则将其变成错误的;原本测试错误的结果则将其变成正确的。

综合实例:

从左到右执行推断:

  1. 条件测试里面是逻辑非部分,得出结果是False(因为此时的USER就是 root)
  2. 接下来遇到逻辑与,我们知道前面是False,证明后面的东西不会输出
  3. 再往右看下去,是逻辑或:当前面命令执行失败时,执行||后面的命令。

于是,输出root 。


整数值比较

整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作。


字符串比较

字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即判断内容是否为空值)