1. shell简介

shell是什么:shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

2. shell脚本快速入门:shell脚本的执行方式

2.1 脚本格式要求

  1. 脚本要以#!/bin/bash开头。
  2. 脚本需要有可执行权限。

2.2 编写第一个脚本程序

  1. 创建一个shll文件:vim myShell.sh。
  2. 然后编写:注意shell不需要;分号来作为结尾。

    1. #!/bin/bash
    2. echo "hello, world!"
  3. 给脚本文件可执行权限:chmod 744 myShell.sh。

  4. 然后以相对路径或者绝对路径的方式执行文件。

    1. 相对路径:./myShell.sh。
    2. 绝对路径:/root/shell/myShell.sh。
    3. 图片.png

      3. shell的变量

      3.1 shell的变量的介绍

  5. Linux Shell中的变量分别为,系统变量和用户自定义变量。

  6. 系统变量:
    1. $HOME、$PWD、$SHELL、$USER等等
    2. 比如:echo $HOME等等……
  7. 显示当前shell中所有变量:set。

3.2 shell变量的定义

  • 基本语法:
    • 定义变量:变量=值。
    • 撤销变量:unset 变量。
    • 声明静态变量:readonly 变量,注意:不能unset。
    • 图片.png
    • 图片.png
    • 案例:可把变量提升为全局环境变量,可供其他shell程序使用。
  • 定义变量的规则:
    • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
    • 等号两侧不能有空格。
    • 变量名称一般习惯为大写。
  • 将命令的返回值赋值给变量:(重点)
    • A=ls -la反引号,运行里面的命令,并把结果返回给变量A。
    • A=$(ls -la)等价于反引号。
    • 图片.png

4. 设置环境变量

4.1 基本语法

  1. export 变量名=变量值:将shell变量输出为环境变量。
  2. source 配置文件:让修改后的配置信息立即生效。
  3. echo $变量名:查询环境变量的值。
  4. 图片.png

    5. 位置参数变量

    5.1 基本介绍

    当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。
    比如:./myshell.sh 100 200,这就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息。

5.2 基本语法

  • $n:n为数字,$0表示本身,$1-!9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}。
  • $:这个变量代表命令行中所有参数,$把所有的参数看成一个整体。
  • $@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。
  • $#:这个变量代表命令行中所有参数的个数。
  • 图片.png

6. 预定义变量

基本介绍:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。
基本语法:

  • $$:当前进程的进程号PID。
  • $!:后台运行的最后一个进程的进程号PID。
  • $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。

应用实例:
图片.png

7. 运算符

基本介绍:学习如何在shell中进行各种运算操作。
基本语法:

  • $((运算式))或者$[运算式]。
  • expr m + n:注意expr运算符间要有空格。
  • expr m - n。
  • expr *,/,%。乘,除,取余。

图片.png图片.png

8.条件判断

8.1 判断语句

基本语法:

  • [ condition ]:注意condition前后要有空格。
  • 非空返回true,可使用$?验证。0为true,>1 为false。

应用实例:

  • [ atguigu ]:返回true。
  • []:返回false。
  • [ condition ] && echo OK || echo notok:条件满足,执行后面的语句。

8.2 常用条件判断

8.2.1 两个整数的比较

  • =:字符串比较。
  • -lt:小于。
  • -le:小于等于。
  • -eq:等于。
  • -gt:大于。
  • -ge:大于等于。
  • -ne:不等于。

    8.2.2 按照文件权限进行判断

  • -r:有读的权限。

  • -w:有写的权限。
  • -x:有执行的权限。

    8.2.3 按照文件类型进行判断

  • -f:文件存在并且是一个常规的文件。

  • -e:文件存在。
  • -d:文件存在并且是一个目录。

    8.2.4 应用实例

  • “ok”是否等于“ok”;

  • 图片.png
  • 23是否大于等于22。
  • 图片.png
  • /root/shell/aaa.txt目录中的文件是否存在。
  • 图片.png