Shell 是指一种应用程序,用户通过这个程序访问操作系统内核的服务。
- Windows Explorer,图形界面shell
- Ken Thompson 的 sh,第一种Unix Shell
- Bourne Again Shell(/bin/bash)
Shell 脚本一般指能在sh或bash等Unix命令行shell下运行的脚本,以“.sh”为后缀。
语法
约定
#! 告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
#! /bin/bash
echo "hello world"
- 单行注释: # 后面跟空格,可以注释一整行
- 多行注释: 冒号“:”后跟单引号将多行括起来
# 这是单行注释
:'
注释部分
注释部分
'
变量
-
定义变量
变量的声明方式是var_name=var_value。- 变量名只包含字母(大小写敏感)、数字和下划线 _,数字不能在开头
- 等号前后不能有空格
-
只读变量
使用"readonly"修饰,则变量值不会被改变。readonly var_name -
删除变量
使用"unset"可以删除变量,删除后变量不能再被使用 -
变量类型:
- 字符串: 单引号或者双引号括起来。
str1='abc'str2="def" - 整数类型: file_count=5
- 索引数组: 用小括号括起来,以空格分隔。
my_arr=('aa' "bb" 123) - 关联数组(字典): 需要先声明,declare -A 数组名。
shell 脚本只支持一维数组
- 字符串: 单引号或者双引号括起来。
-
环境变量
由操作系统或用户设置的特殊变量,用于配置 Shell 的行为和影响其执行环境- PATH:包含了操作系统搜索可执行文件的路径
-
特殊变量
- $0 表示脚本的名称
- $1, $2,...,$n 等表示脚本的参数
- $# 表示传递给脚本的参数数量
- $? 表示上一个命令的退出状态
运算符
假设a=10, b=20
- 算术运算需要expr命令,且只支持整数。
| 运算符 | 说明 | 举例 |
|---|---|---|
| + | 加法 | `expr $a + $b` 结果为 30。 |
| - | 减法 | `expr $a - $b` 结果为 -10。 |
| * | 乘法 | `expr $a * $b` 结果为 200。 |
| / | 除法 | `expr $b / $a` 结果为 2。 |
| % | 取余 | `expr $b % $a` 结果为 0。 |
| = | 赋值 | a=$b 把变量 b 的值赋给 a。 |
| == | 相等。用于比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 |
| != | 不相等。用于比较两个数字,不相同则返回 true。 | [ $a != $b ] 返回 true。 |
- 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
| 运算符 | 说明 | 举例 |
|---|---|---|
| -eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
| -ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
| -gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
| -lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
| -ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
| -le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 |
- 布尔运算符
| 运算符 | 说明 | 举例 |
|---|---|---|
| ! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
| -o 或 || | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| -a 或 && | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |

浙公网安备 33010602011771号