shell脚本

什么是shell脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,shell 和 shell script 是两个不同的概念,Shell 是一个用 C 语言编写的应用程序,它是用户使用 Linux 的桥梁。
用shell编写的shell脚本,文件后缀名为.sh

执行shell脚本的两种方式

  • 作为可执行程序
#!/bin/bash
number=10;
echo $number;
image.png
  • 作为解释器参数


    image.png

Shell 变量

  • 定义变量
    定义变量时,变量名不加美元符号,变量名和等号之间不能有空格,其他命名规则与其他脚本语言类似
  • 使用变量
    使用一个定义过的变量,只要在变量名前面加美元符号即可
    -只读变量
    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,相当于是常量不允许修改
  • 删除变量
    使用 unset 命令可以删除变量 语法:unset variable_name
  • 变量类型
  1. 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2. 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
  • Shell 字符串
  1. 单引号
    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 引号字串中不能出现单引号(对单引号使用转义符后也不行)
  2. 双引号
    双引号里可以有变量 双引号里可以出现转义字符
  3. 拼接字符串
shell脚本_第1张图片
image.png
  • Shell 数组
    bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
    类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0
  1. 定义数组
    在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为 数组名=(值1 值2 ... 值n)
  2. 读取数组 读取数组元素值的一般格式是:${数组名[下标]}
  3. 获取数组的长度 获取数组长度的方法与获取字符串长度的方法相同


    shell脚本_第2张图片
    image.png
  • Shell 注释
    以"#"开头的行就是注释,会被解释器忽略 备注:sh里面没有多行注释

Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用

  • 算术运算符
运算符 说明
+ 减法
- 减法
* 乘法
/ 除法
% 取余
= 赋值
== 相等。用于比较两个数字,相同则返回 true
!= 不相等。用于比较两个数字,不相同则返回 true
shell脚本_第3张图片
image.png
  • 关系运算符
运算符 说明
-eq 检测两个数是否相等,相等返回 true
-ne 检测两个数是否不相等,不相等返回 true
-gt 检测左边的数是否大于右边的,如果是,则返回 true
-lt 检测左边的数是否小于右边的,如果是,则返回 true
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true
-le 检测左边的数是否小于等于右边的,如果是,则返回 true
shell脚本_第4张图片
image.png
  • 逻辑运算符
运算符 说明
&& 逻辑的 AND
| | 逻辑的 OR
shell脚本_第5张图片
image.png
  • 字符串运算符
运算符 说明
= 检测两个字符串是否相等,相等返回 true
!= 检测两个字符串是否相等,不相等返回 true
-z 检测字符串长度是否为0,为0返回 true
-n 检测字符串长度是否为0,不为0返回 true
str 检测字符串是否为空,不为空返回 true

ehco和printf命令

shell脚本_第6张图片
image.png

Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

Shell 流程控制

  • if条件判断


    shell脚本_第7张图片
    image.png
  • for循环


    shell脚本_第8张图片
    image.png

    shell脚本_第9张图片
    image.png
  • while循环


    shell脚本_第10张图片
    image.png
  • until循环


    shell脚本_第11张图片
    image.png
  • break跳出整个循环


    shell脚本_第12张图片
    image.png
  • continue跳出当前循环继续下一次循环


    shell脚本_第13张图片
    image.png

Shell 函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)


shell脚本_第14张图片
image.png

Shell 输入/输出重定向

  • /dev/null 文件
    如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null

你可能感兴趣的:(shell脚本)