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)

相关推荐
yyuuuzz2 小时前
企业出海:技术部署与运维避坑
运维
郝亚军2 小时前
ubuntu通过samba,让win11可以访问其共享文件夹
linux·服务器·ubuntu
workflower2 小时前
人机交互部分OOD
运维·人工智能·自动化·集成测试·人机交互·软件需求
一个人旅程~2 小时前
旧电脑的“拯救者”?Linux Mint20.3是怎样适配软件硬件以及兼顾兼容与性能的平衡的?
linux·经验分享·电脑
农村小镇哥2 小时前
nginx服务器的介绍
运维·服务器·nginx
小夏子_riotous3 小时前
Docker学习路径——3、常用命令
linux·运维·服务器·学习·docker·容器·centos
其实防守也摸鱼3 小时前
无线网络安全---WLAN相关安全工具--kali(理论附题目)
linux·安全·web安全·学习笔记·kali·命令模式·wlan
uesowys5 小时前
CentOS Linux安装部署OpenClaw
linux·centos·安装部署openclaw
IMPYLH5 小时前
Linux 的 rm 命令
linux·运维·服务器·网络·bash
YIN_尹5 小时前
【Linux系统编程】进程地址空间
linux·c++