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)

相关推荐
Yeats_Liao几秒前
容器化部署:基于Docker的推理环境隔离与迁移
运维·docker·容器
开开心心就好3 分钟前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节
txinyu的博客4 分钟前
连接池问题
服务器·网络·c++
CTO Plus技术服务中4 分钟前
大厂面试笔记和参考答案!浏览器自动化、自动化测试、自动化运维与开发、办公自动化
运维·笔记·面试
数据知道4 分钟前
万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)
linux·windows·postgresql
YYYing.5 分钟前
【计算机网络 | 第七篇】计网之传输层(一)—— 传输层概述与协议头分析
服务器·网络·网络协议·tcp/ip·计算机网络·udp
zyxzyx496 分钟前
大模型本地化部署实战:从服务器性能调优到低成本落地全攻略
服务器·开发语言·php
浅安的邂逅10 分钟前
ubuntu 18.04及以上版本 ping命令报错:Name or service not known解决方法
linux·运维·ubuntu·ip设置
重生之绝世牛码12 分钟前
Linux软件安装 —— JDK安装
java·大数据·linux·运维·jdk
晚风吹长发18 分钟前
初步理解Linux中的进程间通信以及管道通信
linux·运维·服务器·c++·进程·通信