# Shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
* * *
## 数值测试
| 参数 | 说明 |
| --- | --- |
| \-eq | 等于则为真 |
| \-ne | 不等于则为真 |
| \-gt | 大于则为真 |
| \-ge | 大于等于则为真 |
| \-lt | 小于则为真 |
| \-le | 小于等于则为真 |
## 实例
```
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo'两个数相等!'
else
echo'两个数不相等!'
fi
```
输出结果:
~~~
两个数相等!
~~~
代码中的\[\]执行基本的算数运算,如:
## 实例
```
#!/bin/bash
a=5
b=6
result=$[a+b] # 注意等号两边不能有空格
echo"result 为:$result"
```
结果为:
~~~
result 为: 11
~~~
* * *
## 字符串测试
| 参数 | 说明 |
| --- | --- |
| \= | 等于则为真 |
| != | 不相等则为真 |
| \-z 字符串 | 字符串的长度为零则为真 |
| \-n 字符串 | 字符串的长度不为零则为真 |
## 实例
```
num1="ru1noob"
num2="runoob"
if test $num1=$num2
then
echo'两个字符串相等!'
else
echo'两个字符串不相等!'
fi
```
输出结果:
~~~
两个字符串不相等!
~~~
* * *
## 文件测试
| 参数 | 说明 |
| --- | --- |
| \-e 文件名 | 如果文件存在则为真 |
| \-r 文件名 | 如果文件存在且可读则为真 |
| \-w 文件名 | 如果文件存在且可写则为真 |
| \-x 文件名 | 如果文件存在且可执行则为真 |
| \-s 文件名 | 如果文件存在且至少有一个字符则为真 |
| \-d 文件名 | 如果文件存在且为目录则为真 |
| \-f 文件名 | 如果文件存在且为普通文件则为真 |
| \-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
| \-b 文件名 | 如果文件存在且为块特殊文件则为真 |
## 实例
```
cd /bin
iftest -e ./bash
then
echo'文件已存在!'
else
echo'文件不存在!'
fi
```
输出结果:
~~~
文件已存在!
~~~
另外,Shell 还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:!最高,\-a次之,\-o最低。例如:
## 实例
```
cd /bin
iftest -e ./notFile -o -e ./bash
then
echo'至少有一个文件存在!'
else
echo'两个文件都不存在'
fi
```
输出结果:
~~~
至少有一个文件存在!
~~~
- Linux
- linux常用命令
- awk
- cp
- scp
- mv
- screen工具
- rsync
- Linux设置静态IP
- vim常用
- ssh免密登录
- linux挂载磁盘和开机自动挂载
- 文件的时间戳
- 重定向
- 防火墙
- Vultr 服务器利用快照更换IP
- ss
- node-yarn
- ES安装向导
- lnmp/lamp
- windows安装mysql
- windows安装nginx
- Let'sEncrypt 免费通配符/泛域名SSL证书
- 开机自动挂载硬盘
- 普通用户提权
- ELK日志分析系统
- Docker
- docker
- centos7安装docker
- Centos7安装redis
- CentOS 7 使用Docker搭建Nginx
- CentOS 7 使用Docker搭建Jenkins
- CentOS 7 使用Docker搭建Zookeeper
- CentOS 7 使用Docker搭建Tomcat
- CentOS 7 使用Docker搭建Mysql
- CentOS 7 使用Docker搭建PHP环境
- 使用docker搭建Swagger
- docker阿里云私有仓库
- docker zookeeper集群
- docker部署ES
- docker之java容器运行外置springboot-jar
- docker部署owncloud云盘
- ETCD
- centos7部署etcd节点
- Dockerfile
- Docker-compose
- gitlab.yml
- db.yml
- 安装docker-compose
- gitlab-docker-compose.yml
- nginx-docker-compose.yml
- Mysql
- mysql开启远程访问及相关权限控制
- mysql授权
- mysql快速导出导入大数据
- mysql单机备份
- binlog日志
- shell
- 经典案例
- 俄罗斯方块游戏
- 系统初始化
- 服务器监控
- go基础环境
- shell.监控日志.elk
- shell.检查各服务脚本
- shell.删除文件脚本
- shell.守护进程
- shell.数据库
- shell.Ansible
- shell.dev
- shell.ftp环境
- shell.docker环境
- shell.k8s环境
- k8s.二进制安装
- K8s.一主多从
- k8s.三主两从高可用
- k8s.检查服务与配置
- k8s.jenkins
- k8s.gitlab
- go-install.sh
- jenkins-install.sh
- node-install.sh
- redis-install.sh
- zabbix-install.sh
- zabbix-dockerfile.sh
- nginx-install.sh
- shell变量
- 用户自定义变量
- 环境变量
- shell特殊变量
- shell条件判断
- 流程控制
- shell运算符
- Shell _printf
- shell_test
- shell函数
- 输出重定向
- 网络相关
- 安全相关
- 堡垒机部署
- 区块链威胁情报共享平台
- 签名与验签
- 浅谈区块链
- 智能合约
- 黄金币GTF智能合约
- 节点
- 以太坊公链私链geth同步
- 比特节点同步
- BTC节点错误解决方法
- eth硬分叉
- omni钱包节点搭建
- 架构
- K8s
- 搭建k8s集群完整篇
- 二进制部署k8s
- Devops
- git
- Jenkins
- svn
- 禅道
- CI/CD
- docker+jenkins+golang持续集成持续交付(CI/CD)
- 项目部署
- config.env
- docker-compose.yml
- Dockerfile模板
- .dockerignore
- run.sh
- nginx.conf模板
- 跨域
- jenkins配置
- 测试
- Python