一、变量和字符串
| 用途 | 语法 | 输出 | 备注 |
|---|
| 新建变量 | x=hello | | 变量名和等号间无间隔 |
| 修改变量值 | x=hello1 | | 不使用‘$’符号 |
| 使用变量 | ${x} | | 花括号可有可无,但是可以确定变量边界,‘$’必须有 |
| 输出 | echo $x world | #hello world | 字符串可以没有双引号或单引号来进行分割 |
| 只读变量 | readonly x | | 此后修改变量x值会报错 |
| 删除变量 | unset x | | 无法删除只读变量 |
| 获取字符串长度 | ${#x} | #5 | 必须加花括号 |
| 截取字符串 | ${x:1:3} | #ell | 从一号位置开始截取三个字符 |
| 查询字符位置 | `expr index “$x” eo` | #1 | 使用“`”反引号,查找字符‘e’或‘o’的位置,先找到那个字符就输出其位置 |
| 注释 | #这是注释 | | 只有单行注释 |
二、数组
| 用途 | 语法 | 输出 | 备注 |
|---|
| 新建数组变量 | arr=(1 3 5 7 9) | | 括号表示数组,使用空格隔开每项,不支持多维数组,下标从0开始 |
| 单独定义数组变量 | arr[1]=4 | | 可以不连续 |
| 读取数组 | ${arr[2]} | #5 | 必须添加花括号,使用@索引获取全部数组元素 |
| 获取数组长度 | ${#arr[@/*]} | #5 | ‘@’或‘*’都可以 |
三、参数传递
| 用途 | 语法 | 输出 | 备注 |
|---|
| 获取传递参数 | $2 | | 获取打开文件时传递的第二个参数,如:“./hello.sh 1 2 3”此时获取的是‘2’ |
| 获取执行文件名 | $0 | | 获取到执行的文件名称:“./hello.sh” |
| 获取传递到脚本的参数个数 | $# | “3” | |
| 将传递的参数用字符串显示 | $* | “1 2 3” | 一个值 |
| 将传递的参数用字符串显示 | $@ | “1” “2” “3” | 三个值 |
四、算术运算符
| 用途 | 语法 | 输出 | 备注 |
|---|
| 运算“+ - / %” | `expr 1 + 1` | 2 | 使用“`”反引号分割;expr表达式工具;表达式和运算符之间必须要有空格分割 |
| 运算“*” | `expr 1 \* 1` | 2 | 对于乘法“*”必须要转义“\*” |
| 判断相等 | [ $x == $y ] | | 表达式和中括号之间必须有空格 |
五、关系运算符
x=10
y=20
| 用途 | 语法 | 输出 | 备注 |
|---|
| 判断相等 | [ $x -eq $y ] | false | -eq |
| 判断不相等 | [ $x -nq $y ] | true | -nq |
| 判断大于 | [ $x -gt $y ] | false | -gt |
| 判断小于 | [ $x -lt $y ] | true | -lt |
| 判断大于等于 | [ $x -ge $y ] | false | -ge |
| 判断小于等于 | [ $x -le $y ] | true | -le |
| 非运算 | [ ! $x -eq $y] | true | -eq |
| 算术与运算 | [ $x -eq $y -a \$x -nq \$y ] | false | -a |
| 算术或运算 | [ $x -eq $y -o \$x -nq \$y ] | true | -o |
| 逻辑与运算 | [ $x -eq $y && \$x -nq \$y ] | false | && |
| 逻辑或运算 | [ $x -eq $y || \$x -nq \$y ] | true | || |
六、字符串运算符
x="hello"
y="world"
| 用途 | 语法 | 输出 | 备注 |
|---|
| 判断字符串相等 | [ $x = $y ] | false | = |
| 判断字符串不相等 | [ $x != $y ] | true | != |
| 判断字符串不相等 | [ $x != $y ] | true | != |
| 判断字符串长度为0 | [ -z $x ] | false | -z |
| 判断字符串长度不为0 | [ -n $x ] | true | -n |
| 判断字符串不为空 | [ $x ] | true | str |
七、文件测试运算符
file="/var/www/runoob/test.sh"
#变量file 表示文件"/var/www/runoob/test.sh",它的大小为100字节,具有 rwx 权限。
| 用途 | 语法 | 输出 | 备注 |
|---|
| 检测文件是否是目录 | [ -d $file ] | false | -d |
| 检测文件是否可读 | [ -r $file ] | true | -r |
| 检测文件是否可写 | [ -w $file ] | true | -w |
| 检测文件是否可执行 | [ -x $file ] | true | -x |
| 检测文件是否为空 | [ -s $file ] | true | -s |
| 检测文件是否存在 | [ -e $file ] | true | -e |