什么是shell脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,shell 和 shell script 是两个不同的概念,Shell 是一个用 C 语言编写的应用程序,它是用户使用 Linux 的桥梁。
用shell编写的shell脚本,文件后缀名为.sh
执行shell脚本的两种方式
- 作为可执行程序
#!/bin/bash
number=10;
echo $number;
-
作为解释器参数
Shell 变量
- 定义变量
定义变量时,变量名不加美元符号,变量名和等号之间不能有空格,其他命名规则与其他脚本语言类似 - 使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可
-只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变,相当于是常量不允许修改 - 删除变量
使用 unset 命令可以删除变量 语法:unset variable_name - 变量类型
- 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
- Shell 字符串
- 单引号
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 引号字串中不能出现单引号(对单引号使用转义符后也不行) - 双引号
双引号里可以有变量 双引号里可以出现转义字符 - 拼接字符串
- Shell 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0
- 定义数组
在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为 数组名=(值1 值2 ... 值n) - 读取数组 读取数组元素值的一般格式是:${数组名[下标]}
-
获取数组的长度 获取数组长度的方法与获取字符串长度的方法相同
- Shell 注释
以"#"开头的行就是注释,会被解释器忽略 备注:sh里面没有多行注释
Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用
- 算术运算符
运算符 | 说明 |
---|---|
+ | 减法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
= | 赋值 |
== | 相等。用于比较两个数字,相同则返回 true |
!= | 不相等。用于比较两个数字,不相同则返回 true |
- 关系运算符
运算符 | 说明 |
---|---|
-eq | 检测两个数是否相等,相等返回 true |
-ne | 检测两个数是否不相等,不相等返回 true |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true |
- 逻辑运算符
运算符 | 说明 |
---|---|
&& | 逻辑的 AND |
| | | 逻辑的 OR |
- 字符串运算符
运算符 | 说明 |
---|---|
= | 检测两个字符串是否相等,相等返回 true |
!= | 检测两个字符串是否相等,不相等返回 true |
-z | 检测字符串长度是否为0,为0返回 true |
-n | 检测字符串长度是否为0,不为0返回 true |
str | 检测字符串是否为空,不为空返回 true |
ehco和printf命令
Shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
Shell 流程控制
-
if条件判断
-
for循环
-
while循环
-
until循环
-
break跳出整个循环
-
continue跳出当前循环继续下一次循环
Shell 函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
Shell 输入/输出重定向
- /dev/null 文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null