文章目录
Shell 条件表达式
条件测试与比较 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作, 有时也会通过与if等条件语句相结合,更方便的完成判断
真 1 假 0
条件测试通常有如下3种语法形式
语法格式1:test <测试表达式>
语法格式2:[ 测试表达式 ]
语法格式3:[[ 测试表达式 ]]
最多 22 列
-
剪切
-
复制
-
粘贴
请使用 Ctrl+V 粘贴
-
向上插入 1 行
-
向下插入 1 行
-
向左插入 1 列
-
向右插入 1 列
-
插入超链接
-
合并单元格
-
取消合并单元格
-
删除列
-
删除行
-
删除表格
文件判断
使用方法 | 功能描述 |
---|---|
test -f 文件 | 文件存在且为普通文件则真,条件表达式成立 |
test -d 目录 | 目录存在且为目录文件则真,条件表达式成立 |
test -s 文件 | 文件存在且文件大小不为0则真,条件表达式成立 |
test -e 文件 | 文件存在则真,只要有文件就行 |
test -r 文件 | 文件存在且可读则真,条件表达式成立 |
test -w 文件 | 文件存在且可写则真,条件表达式成立 |
test -L 文件 | 文件存在且为链接文件则真,条件表达式成立 |
test f1 -nt f2 | 文件f1比文件f2新则真,条件表达式成立 |
test f1 -ot f2 | 文件f1比文件f2旧则真,条件表达式成立 |
test -n "string" | "string"长度不为0,条件表达式成立 |
test -z "string" | "string"长度为0,条件表达式成立 |
test str1 = str2 | "str1"内容和 "str2"内容完全一致,条件表达式成立 |
test str1 != str2 | "str1"内容和"str2"内容不一致,条件表达式成立 |
test int1 -eq int2 | "int1"的值和"int2"的值相等,条件表达式成立 |
test语法
[root@db02 scripts]# test -f /etc/hosts && echo 1||echo 0 1 [root@db02 scripts]# test -x /etc/hosts && echo 1||echo 0 0 [root@db02 scripts]# test -x test1.sh && echo 1||echo 0 0 [root@db02 scripts]# chmod +x test1.sh [root@db02 scripts]# test -x test1.sh && echo 1||echo 0 1 [root@db02 scripts]# test -d /etc && echo 1||echo 0 1 [root@db02 scripts]# test -d /etc/hosts && echo 1||echo 0 0 [root@db02 scripts]# test -z "oldboy" && echo 1||echo 0 0 [root@db02 scripts]# test -z "" && echo 1||echo 0 1
[ ] 语法
最多 22 列
-
剪切
-
复制
-
粘贴 请使用 Ctrl+V 粘贴
-
向上插入 1 行
-
向下插入 1 行
-
向左插入 1 列
-
向右插入 1 列
-
插入超链接
-
合并单元格
-
取消合并单元格
-
删除列
-
删除行
-
删除表格
使用方法 | 功能描述 |
---|---|
[ -f 文件 ] | 文件存在且为普通文件则真,条件表达式成立 |
[ -d 目录 ] | 目录存在且为目录文件则真,条件表达式成立 |
[ -s 文件 ] | 文件存在且文件大小不为0则真,条件表达式成立 |
[ -e 文件 ] | 文件存在则真,只要有文件就行 |
[ -r 文件 ] | 文件存在且可读则真,条件表达式成立 |
[ -w 文件 ] | 文件存在且可写则真,条件表达式成立 |
[ -L 文件 ] | 文件存在且为链接文件则真,条件表达式成立 |
[ f1 -nt f2 ] | 文件f1比文件f2新则真,条件表达式成立 |
[ f1 -ot f2 ] | 文件f1比文件f2旧则真,条件表达式成立 |
[ -n "string" ] | "string"长度不为0,条件表达式成立 |
[ -z "string" ] | "string"长度为0,条件表达式成立 |
[ "str1" = "str2" ] | "str1"内容和 "str2"内容完全一致,条件表达式成立 |
[ "str1" != "str2" ] | "str1"内容和"str2"内容不一致,条件表达式成立 |
[ int1 -eq int2 ] | "int1" 等于 "int2" ,条件表达式成立 |
[ int1 -ne int2 ] | "int1" 不等于 "int2" ,条件表达式成立 |
[ int1 -gt int2 ] | "int1" 大于 "int2",条件表达式成立 |
[ int1 -ge int2 ] | "int1" 大于或等于 "int2",条件表达式成立 |
[ int1 -lt int2 ] | "int1" 小于 "int2",条件表达式成立 |
[ int1 -le int2 ] | "int1" 小于或等于 "int2",条件表达式成立 |
[root@db02 scripts]# [ -f /etc/hosts ] && echo 1||echo 0 1 [root@db02 scripts]# [ -f /etc/host ] && echo 1||echo 0 0 [root@db02 scripts]# [ -d /etc/host ] && echo 1||echo 0 0 [root@db02 scripts]# [ -d /etc ] && echo 1||echo 0 1 1. **[[ ]]语法** [root@db02 scripts]# [[ -d /etc/hosts ]] && echo 1||echo 0 0 [root@db02 scripts]# [[ -d /etc ]] && echo 1||echo 0 1 [root@db02 scripts]# [[ -d /etc && -f /etc/hosts ]] && echo 1||echo 0 1 [root@db02 scripts]# [[ -d /etc && -f /etc/host ]] && echo 1||echo 0 0 [root@db02 scripts]# [ -d /etc && -f /etc/host ] && echo 1||echo 0 -bash: [: missing `]' 0 [root@db02 scripts]# [ -d /etc -a -f /etc/host ] && echo 1||echo 0 0 [root@db02 scripts]# [ -d /etc -o -f /etc/host ] && echo 1||echo 0 1 [root@db02 scripts]# [[ -d /etc || -f /etc/host ]] && echo 1||echo 0 1
检查文件目录是否存在
. /etc/init.d/functions function checkDirExist() { local ONE_PATH="$1" test -d "$ONE_PATH" && action "check dir" /bin/true || action "check dir" /bin/false } checkDirExist $1
[ ] [[ ]] 对比
[root@web01 shell_class_02]# [ 2 -gt 1 -a 1 -eq 1 ];echo $? 0 [root@web01 shell_class_02]# [[ 2 -gt 1 && 1 -eq 1 ]];echo $? 0
(( )) 只能用于整数判断
[root@oldboy36 scripts]# ((1>1)) && echo 1 || echo 0 0 [root@oldboy36 scripts]# ((1==1)) && echo 1 || echo 0 1 [root@oldboy36 scripts]# ((1>=1)) && echo 1 || echo 0 1 [root@oldboy36 scripts]# ((1==1)) && ((2<3)) && echo 1 || echo 0 1 [root@oldboy36 scripts]# ((1==1)) && ((2==3)) && echo 1 || echo 0 0 [root@oldboy36 scripts]# ((1==1)) || ((2==3)) && echo 1 || echo 0 1
[root@oldboy36 scripts]# a=1 [root@oldboy36 scripts]# b=2 [root@oldboy36 scripts]# c=5 [root@oldboy36 scripts]# d=5 [root@oldboy36 scripts]# ((a<b)) && ((c>d)) && echo 1 || echo 0 0 [root@oldboy36 scripts]# ((a<b)) && ((c=d)) && echo 1 || echo 0 1 [root@oldboy36 scripts]# ((a<b)) || ((c<d)) && echo 1 || echo 0 1 [root@oldboy36 scripts]# ((a>=b)) && echo 1 || echo 0 0 [root@oldboy36 scripts]# ((a!=b)) && echo 1 || echo 0 1
[root@oldboy36 scripts]# cat judge.sh read -p "请输入第1个参数:" num1 read -p "请输入第2个参数:" num2 [ -z "$num1" -o -z "$num2" ] && echo "输入不全是数字" && exit 1 expr $num1 + 1 &> /dev/null (($?!=0)) && echo "第一个参数不是整数" && exit 2 expr $num2 + 1 &> /dev/null (($?!=0)) && echo "第二个参数不是整数" && exit 3 ((num1>num2)) && echo "$num1>$num2" && exit ((num1==num2)) && echo "$num1=$num2" && exit ((num1<num2)) && echo "$num1<$num2" && exit
最新评论
# 这只是一个创建远程登录并授权的语句、仅作为记录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Fit2cloud!' WITH GRANT OPTION;
当MGR集群初始化结束后,需要开启MGR集群自启动(需要有一台节点是自动开启引导) loose-group_replication_start_on_boot = ON #设置节点是否在启动时自动启动 MGR 集群 loose-group_replication_bootstrap_group = ON #设置节点是否作为初始引导节点启动集群
密码:blog.sirliu.com
本内容密码:blog.sirliu.com 最新整理的文章在这里喔:https://blog.sirliu.com/2018/11/shell_lian_xi_ti.html