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)

相关推荐
钰衡大师几秒前
MySQL服务器表导入本地开发环境
服务器·mysql
朱一头zcy4 分钟前
Linux系列04:简单理解inode、硬链接、软链接、挂载的概念
linux·笔记
L16247611 分钟前
Nginx+Keepalived 高可用集群实战笔记
运维·笔记·nginx
志栋智能13 分钟前
AI超自动化运维,让IT运维自动化门槛更低
运维·网络·人工智能·安全·自动化
郭庆汝18 分钟前
Ubuntu安装Node.js
linux·ubuntu·node.js
我去流水了21 分钟前
【独家免费】【亲测】在linux下嵌入式linux的web http服务【Get、Post】,移植mongoose,post上传文件
linux·运维·前端
无籽西瓜a21 分钟前
Linux 文件权限与 chmod 详解
linux·服务器·后端
攻城狮在此23 分钟前
Rufus使用教程:Windows/Linux 系统启动盘制作
linux·服务器·windows
尽兴-27 分钟前
Elasticsearch 8.14.3 安装部署实战:Windows/Linux + Kibana + 常用插件
linux·windows·elasticsearch·kinana·es 浏览器插件
DARLING Zero two♡30 分钟前
CentOS 部署 Teemii:打造专属私人漫画阅读库
linux·运维·centos