补充知识
条件判断
表达式 实例
[ expression ] [ 1 -eq 1 ]
[[ expression ]] [[ 1 -eq 1 ]]
test expression test 1 -eq 1 ,等同于[]
- 注意:括号中的表达式前后都有空格,否则会报错!
╭─root@localhost.localdomain ~ ╰─➤ [ 1 -eq 1 ] && echo "true" || echo "false" true ╭─root@localhost.localdomain ~ ╰─➤ [ 1 -eq 2 ] && echo "true" || echo "false" false ╭─root@localhost.localdomain ~ ╰─➤ [1 -eq 2] && echo "true" || echo "false" zsh: bad pattern: [1
整数比较符
比较符 描述 实例
-eq, equal 等于 [ 1 -eq 1 ] 为true
-ne, not equal 不等于 [ 1 -ne 1 ] 为false
-gt, greate than 大于 [ 1 -gt 1 ] 为false
-lt, lesser than 小于 [ 1 -lt 1 ] 为false
-ge, greate or equal 大于或者等于 [ 1 -ge 1 ] 为true
-le, lesser or equal 小于或者等于 [ 1 -le 1 ] 为true
字符串比较符
运算符 描述 实例
== 等于 [ “a” == “a” ] 为true
!= 不等于 [ “a” != “a” ] 为false
-n 字符串长度不等于 0 为真 VAR1=1;VAR2=””,[ -n “V A R 1 ” ] 为 t r u e , [ − n “ VAR1” ]为 true,[ -n “VAR1”]为true,[−n“VAR2” ]为 false
-z 字符串长度等于 0 为真 VAR1=1;VAR2=””,[ -z “V A R 1 ” ] 为 f a l s e , [ − z “ VAR1” ]为false,[ -z “VAR1”]为false,[−z“VAR2” ]为 true
- 注意:使用-n 判断字符串长度时,变量要加双引号,养成好习惯,字符串比较时都加上双引号
文件测试
测试符 描述 实例
-e 文件或者目录存在为真 [ -e path ] path 存在为 true
-f 文件存在为真 [ -f file_path ] 文件存在为 true
-d 目录存在为真 [ -d dir_path ] 目录存在为 true
-r 有读权限为真 [ -r file_path ]file_path有读权限为真
-w 有写权限为真 [ -w file_path ]file_path有写权限为真
-x 有执行权限为真 [ -x file_path ]file_path有执行权限为真
-s 文件存在且不为空为真 [-s file_path]file_path存在且不为空为真
布尔运算符
运算符 描述 实例
! 非关系,条件结果取反 [ ! 1 -eq 2 ]为true
-a 和关系,在[]表达式中使用 [ 1 -eq 1 -a 2 -eq 2 ]为true,两者都为真才为真
-o 或关系,在[]表达式中使用 [ 1 -eq 1 -o 2 -eq 1 ]为true,两者有一真则为真
逻辑判断符
判断符 描述 实例
&& 逻辑和,在[[]]表达式中或判断表达式是否为真时使用 [[ 1 -eq 1 && 2 -eq 2 ]]为 true,[ 1 -eq 1 ] && echo ‘true’,如果&&前面的表达式为true则执行后面的
|| 逻辑或,在[[]]表达式中或判断表达式是否为真时使用 [[ 1 -eq 1
整数运算符
运算符 描述
+ 加法
– 减法
* 乘法
/ 除法
% 取余
运算表达式 实例
$(()) $((1+1))
$[] $[]
其他运算符
命令 描述 实例
let 赋值并运算 let x++;echo $x 每执行一次 x 加 1,let y–;echo $y 每执行一次 y 减 1,let x+=2 每执行一次 x 加 2,let x-=2 每执行一次 x 减 2
expr 乘法*需要\转义"*" expr 1 * 2 运算符两边必须有空格,expr( 1 + 2) * 2 使用双括号时要转义,
if语句
if语句用exit结束
单分支
if 条件表达式 ;then 命令 fi
- 实例:
#!/bin/bash read -p "请输入数字" num if [ $num -lt 10 ] ;then echo "${num}是数字两位数" fi ... ╭─root@localhost.localdomain ~ ╰─➤ bash test.sh 请输入数字3 3是数字一位数
多分支
if 条件表达式 ;then 命令 else 命令 fi
实例:
#!/bin/bash read -p "请输入数字" num if [ $num -gt 9 -a $num -lt 100 ] ;then echo "${num}是数字两位数" else echo "${num}不是数字两位数" fi ... ╭─root@localhost.localdomain ~ ╰─➤ bash test.sh 请输入数字56 56是数字两位数 ╭─root@localhost.localdomain ~ ╰─➤ bash test.sh 请输入数字222 222不是数字两位数
多分支
if 条件表达式 ;then 命令 elif 条件表达式 ;then 命令 else 命令 fi
实例:
#!/bin/bash num=`echo $RANDOM` if [ $num -lt 1000 ];then echo "$num小于1000" elif [ $num -ge 1000 -a $num -lt 2000 ];then echo "$num大于等于1000,小于2000" elif [ $num -ge 2000 -a $num -lt 3000 ];then echo "$num大于等于2000,小于3000" elif [ $num -ge 3000 -a $num -lt 4000 ];then echo "$num大于等于3000,小于4000" else echo "$num大于等于4000" fi ... ╭─root@localhost.localdomain ~ ╰─➤ bash test.sh 24497大于等于4000 ╭─root@localhost.localdomain ~ ╰─➤ bash test.sh 20763大于等于4000