首页 > 系统相关 >Shell test 命令

Shell test 命令

时间:2023-04-02 21:45:50浏览次数:29  
标签:文件 存在 Shell 文件名 echo 命令 字符串 test

Shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

有点像mybatis中的 if 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="job"
num2="task"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi

输出结果:

两个字符串不相等!

文件测试

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真
cd /bin
if test -e ./bash
then
    echo '文件已存在!'
else
    echo '文件不存在!'
fi

输出结果:

文件已存在!

另外,Shell 还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为: ! 最高, -a 次之, -o 最低。例如:

cd /bin
if test -e ./notFile -o -e ./bash
then
    echo '至少有一个文件存在!'
else
    echo '两个文件都不存在'
fi

输出结果:

至少有一个文件存在!

标签:文件,存在,Shell,文件名,echo,命令,字符串,test
From: https://www.cnblogs.com/hcgk/p/17281467.html

相关文章

  • Shell 数组
    Shell数组数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格"符号分割开,语法格式如下:array_name=(value1value2...valuen)实例root@jdit:......
  • Shell 基本运算符
    Shell基本运算符Shell和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常用。这就很神奇了,和其他语言不同基本的原算法都要给第三方......
  • AtCoder Beginner Contest 296
    AtCoderBeginnerContest296比赛连接好久没写题解了~~D-M<=ab题意就是给定N,M,求一个最小的数x同时满足x>=M且x=a*b(a<=N,b<=N);N,M<=1e12开始脑瘫想了二分,仔细一想很明显x不满足单调性,想了下暴力的时间复杂度巨大...纠结了一会,发现因子最大是sqrt(m),只需要枚举一下因......
  • 常用 Git 命令
    Git是我们日常工作中使用频率极高的工具,各种指令让人眼花缭乱,今天,我们就在这里总结一下它的一些基本指令,算是做一份操作笔记吧。基本指令gitadd把要提交的文件的信息添加到暂存区中。当使用gitcommit时,将依据暂存区中的内容来进行文件的提交。它通常将现有路径的当前内容......
  • AtCoder Beginner Contest 144
    AtCoderBeginnerContest144https://atcoder.jp/contests/abc144补一下3.23做的。D-WaterBottle分类讨论,三角函数。#include<bits/stdc++.h>#definepiacos(-1)usingnamespacestd;intmain(){inta,b,x;cin>>a>>b>>x;......
  • AtCoder Beginner Contest 296 A-E
    AtCoderBeginnerContest296A-Alternately1voidsolve(){2intn=read();3strings;4cin>>s;5intans=1;6for(inti=0;i<s.size()-1;i++){7if(s[i]==s[i+1])ans=0;8}9puts(ans>0?"Yes&......
  • python接口自动化pytest+yaml+allure
    简介分层common公共层data数据层test层+main文件其中pytest框架使用pytest.ini全局配置和conftest.py夹具test层下载对于的安装包编写对于的用例实现参数化编写对于的fixture和pytest全局配置常用pytest执行方法main方法:pytest.main(['-vs','-n2'])console:py......
  • Linux数据分析之九个给力的命令行工具
    导读要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表格工具无疑是第一选项。但命令行工具同样能够更快更高效地解决问题——且只须稍微学习即可上手。要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表......
  • docker、compose安装及基础操作命令
    docker安装下载Docker依赖的组件yum-yinstallyum-utilsdevice-mapper-persistent-datalvm2设置下载docker服务的镜像源(阿里云)yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker服务yum-yinstalldocker-ce设置开机......
  • VC6 在win11下运行出现 LINK : fatal error LNK1168: cannot open Debug/test.exe for
    写在前面vc6下载地址:https://softdown01.rbread04.cn/down/VC6.0green.rar?timestamp=6429444b&auth_key=e4fc373a1342be9ce2d6802419980ade注意:如果是win11则记得修改msdev名字修改兼容性和管理员运行才行 问题:最近用vc6学习逆向的时候出现的,记录下,方便查阅:LINK:fatal......