一、变量和字符串
用途 | 语法 | 输出 | 备注 |
---|
新建变量 | 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 |