RHCE的条件测试

什么是条件测试

Shell 条件测试:用于判断某个条件是否成立,返回 **真(0)或假(非0)**。

常用形式:

注意:中括号条件两侧必须要有空格,要不然会报错

  1. 条件 \]或 test 条件→ 传统测试

  2. ((表达式)) → 整数算术/逻辑测试

简而言之:用来检查文件状态、字符串关系或数值关系,并根据结果控制程序流。

一、test的用法

root@server \~\]# test -f /etc/passwd \[root@server \~\]# echo $? 0 \[root@server \~\]# test -f /etc/passwd \&\& echo 真 \|\| echo 假 (将两条命令合在一起) 真 \[root@server \~\]# test -f /etc/ssh \&\& echo 真 \|\| echo 假 (ssh不是文件是一个目录) 假 \[root@server \~\]# test -f /etc/ssh/sshd_config \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -d /etc/ssh \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -e /etc/ssh \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -r /etc/ssh \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -w /etc/ssh \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -x /etc/ssh \&\& echo 真 \|\| echo 假 真 \[root@server \~\]# test -L /etc/ssh \&\& echo 真 \|\| echo 假 假 \[root@server \~\]# test -s /etc/passwd \&\& echo 真 \|\| echo 假 真 一个文件如果具备x权限表示它可执行,一个目录如果具备x权限表示是否可以进 **二、\[\]的用法** \[root@server \~\]# \[ -f /etc/cron.d \] \&\& echo true \|\| echo false false \[root@server \~\]# \[ -d /etc/cron.d \] \&\& echo true \|\| echo false true \[root@server \~\]# \[ -L /etc/cron.d \] \&\& echo true \|\| echo false false \[root@server \~\]# \[ -S /etc/cron.d \] \&\& echo true \|\| echo false false \[root@server \~\]# mkfifo pip #创建管道文件 \[root@server \~\]# \[ -p pip \] \&\& echo true \|\| echo false true # 逻辑运算 -a与 -o或 !非 \[\[\]\]的用法,\[\[\]\]是\[\]强化版本,所以\[\]支持的方法\[\[\]\]完全支持,并且额外支持: 比较运算符无需转义 支持逻辑运算符 \&\& 、\|\|、! 支持模式匹配(正则表达式) **三、整数测试** **案例分析** **例1:判断当前系统中已登录账户数,若大于等于2个则输出"Too many" 否则输出" normal"** 1.打开虚拟机随便创建一个普通用户并进入,然后进入Xshell ![](https://i-blog.csdnimg.cn/direct/9c6546531d9f49d283b8e48665b4c362.png) 2.首先用w命令查看账户数 ![](https://i-blog.csdnimg.cn/direct/300d05608de24fe3bddcbab78ab12a74.png) 3.进行查重,查重命令为 ![](https://i-blog.csdnimg.cn/direct/b220bc03fb4c463e96c84e9c5534a9cf.png) 或 ![](https://i-blog.csdnimg.cn/direct/1da8e7820da24f869f930de59cf8f124.png) 4.统计行数 ![](https://i-blog.csdnimg.cn/direct/53df172124ff4eb9a1bcd7f77855c3d5.png) 5.写脚本 进入#vim first.ssh ![](https://i-blog.csdnimg.cn/direct/f80e9cfaa4ca474ab0b8e80e4987b093.png) 然后执行 sh first.ssh 6、启用脚本后可查看为Too many(如图1),如果我断掉右边的普通用户则为normal(如图2) 图1: ![](https://i-blog.csdnimg.cn/direct/2d5389044c1643c18c0cb50cfb37fea7.png) 图2: ![](https://i-blog.csdnimg.cn/direct/4331601fdcb64079bd7d4b9af8947b44.png) **3.例2:编写脚本temp2.sh ,程序允许输入一个目录名,** **判断该目录是否存在,若不存在则创建,并显示目录信息** 1.vim temp2.sh ![](https://i-blog.csdnimg.cn/direct/daa1dc52eac2448ea99d03fcdfd50048.png) #### **执行** ![](https://i-blog.csdnimg.cn/direct/56be843c5397429590bcab59b4f281ac.png) **例3:如果/var/log/messages文件行数大于30行,则显示"多",否则显示"少"** ![](https://i-blog.csdnimg.cn/direct/31292380c0274b3ea730d58735bc50c6.png)

相关推荐
飞Link几秒前
【开发工具】Docker常用操作
运维·docker·容器
忙里偷闲学python3 分钟前
mysql
linux·数据库·mysql·oracle
nxlifebao3576 分钟前
自媒体整体效率提升怎么做?AI智能媒体助理自动化是关键
运维·自动化·媒体·ai内容创作·自动化工作流·自媒体效率提升·多平台分发
sun0077008 分钟前
iptables 配置 3台设备 进行路由转发(不同网段)
运维·服务器
landyjzlai16 分钟前
深入理解AMBA总线(14)AXI Ordering Model、非对齐访问
运维·服务器
lbb 小魔仙17 分钟前
【Linux】Linux入门实战教程:文件系统与进程管理
linux·运维·服务器
ts97722 分钟前
Nginx + Vue History 模式刷新 404 的完整排查与解决方案
运维·vue.js·nginx
HIT_Weston25 分钟前
76、【Ubuntu】【Hugo】搭建私人博客:Hugo 版本更新
linux·运维·ubuntu
qq_3537375431 分钟前
服务器防止宕机
运维·服务器
LucianaiB37 分钟前
【基于昇腾平台的CodeLlama实践:从环境搭建到高效开发】
运维·人工智能·性能优化