shell-test判断

2023-11-11

一、条件判断参数详解

对于test和[](中括号)判断语句来说,判断结果为真,则退出值为0,即echo $?为0 ,即返回为true,其他为false

1、关于文件名(文件类型)的判断

-e 该[文件名]是否存在 文件和目录都会返回为真
-f 该[文件名]是否存在并且为文件(file)
-d 该[文件名]是否存在并且为目录(directory)

2、关于文件权限的检测

-r 检测该[文件名]是否存在且具有[可读]的权限
-w 检测该[文件名]是否存在且具有[可写]的权限
-x 检测该[文件名]是否存在且具有[可执行]的权限
-u 检测该[文件名]是否存在且具有[SUID]的属性
-g 检测该[文件名]是否存在且具有[SGID]的属性

3、两个文件之间的比较 test file1 -nt file2

-nt 判断file1是否比file2新
-ot 判断file1是否比file2旧

4、关于两个整数之间的判断 test n1 -eq n2

-eq 两数值相等
-ne 两数值不相等
-gt n1大于n2
-lt n1小于n2
-ge n1大于等于n2
-le n1小于等于n2

5、判断字符串的数据

test -z string 判断字符串是否为零,若是空字符串则返回true
yy=
yy=‘’
yy=“”
yy=’ ’
yy=’ ’
yy=" "
yy=" "
这些都是空字符串
test -n string 判断字符串是否为零,若是空字符串则返回false
test str1==str2 判断两个字符串是否相等,如果相等则返回true
test str1==str2 判断两个字符串是否不相等,如果相等则返回false

6、多重条件判断

-a and(同时成立) test -f filename -a -x filename
-o or(只需要一个成立即可) test -f filename -o -x filename
-! 非

二、注意点

1、test 判断语句,如果成功,退出码为0

例如

m=2
n=1
test $m -gt $n
#输出为0  0为真,为true 其他为false
echo $?  

2、常见使用场景

test -e filename && echo "file exists" || echo "file not exists"

文件存在则输出file exists,文件不存在则输出file not exists

3、使用中括号进行判断

例如:

m=2
n=1
[ "$m" -gt "$n" ] ; echo $?

在使用中括号的时候需要注意前后需要有空格,并且对于参数的引用需要加上双引号,否则会报错,比如

[ "$m" -gt "$n" ] ; echo $?
#或者
[ "${m}" -gt "${n}" ] ; echo $?

name="lichf hhh"
[ $name == "lichf" ]  
会报too many arguments ,因为解析之后会变成 [ lichf hhh == "lichf" ],所以需要用双引号括起来[ "$name" == "lichf" ]

4、if判断语句思考

if 0 ;then
    echo "yes"
fi
if 1 ;then
    echo "yes"
fi

上述语句是会报错的

if true ;then
    echo "yes"
fi
if false ;then
    echo "no"
fi

上述语句是成功的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell-test判断 的相关文章

  • 如何使 case 语句匹配数字范围?

    我正在运行一个列号范围为 0 50 的开关案例 现在每个案例都支持离散列号 我观察到它的失败 这是代码 i 10 a 1 b 0 65 if a b then case i in 1 2 5 echo Not OK 9 10 12 echo
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • 如何将 bash 脚本的整个输出保存到文件

    我正在尝试将 bash 脚本的整个输出保存到文件中 我目前在代码开头有一个参数 ip 地址 如下所示 bin bash USAGE Usage 0
  • bash 变量中的 Linux 鞭尾/对话框参数错误

    有人可以解释为什么下面的代码不起作用吗 我要疯狂地想找出答案 bin bash TEST M1 1 wire Interface ON echo TEST RESULT dialog title Config Modules State c
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • 如何制作一个 bash 脚本来同时创建 40 个程序实例?

    我是新来的bash and Linux 我编写了一个程序 我想创建多个同时实例 现在 我通过打开 10 个新终端 然后运行该程序 10 次 我运行的命令是php home calculatedata php 使用 bash 脚本执行此操作的
  • 将相对符号链接转换为绝对符号链接

    如何在 bash 中递归地将相对符号链接转换为绝对符号链接 ln sf readlink f link link
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 使用 find 命令搜索直到第一个匹配项

    我只需要搜索可以在任何地方的特定目录有没有办法运行此命令直到第一个匹配 谢谢 我现在使用 find noleaf name experiment type d wc l 正如鲁道夫 米尔鲍尔 Rudolf M hlbauer 所提到的 qu
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 协助 awk/bash 捕获内存差异

    我正在尝试从以下文件中提取以下输出 xr lab show clock Thu Sep 19 14 38 02 812 WIB 14 38 02 893 WIB Thu Sep 19 2019 xr lab xr lab xr lab sh
  • 为什么 $((true == false)) 在 bash 中计算结果为 1?

    为什么 bash 有以下行为 echo true false 1 我本以为这会打印0 但它打印1 以下事实使情况变得更加复杂 gt echo true 0 gt echo false 0 gt echo true true 1 gt ech

随机推荐

  • jmeter

    我整理了一下性能测试的一些常见指标 大家看看还有没有需要完善的 性能测试是评估系统在特定工作负载下的能力和可靠性的过程 常见的性能测试指标包括以下几种 1 响应时间 Response Time 系统从接收请求到返回响应所需的时间 2 吞吐量
  • 一文读懂运放规格书参数(2)

    1 电源抑制比 Power supply rejection ratio PSRR 定义 双电源供电电路中 保持负电源电压不变 输入不变 而让正电源产生变化幅度为 VS 频率为 f 的波动 那么在输出端会产生变化幅度为 Vout 频率为 f
  • IEEEE trans模板中怎么使用algorithm2e

    IEEEE trans模板中怎么使用algorithm2e 本文主要记录如何在IEEEE trans模板中使用algorithm2e 避免踩坑 找不到解决方案 目录 IEEEE trans模板中怎么使用algorithm2e 1 注释掉该注
  • 2003系统internet信息服务器,WindowsServer2003创建和管理Internet信息服务器.docx

    F图 F图 Windows Server 2003 实训报告 班级 软件设计10 2姓名学号得分 实训九 创建和管理In ternet信息服务器 实训目的 掌握Web FTP服务器的配置 实训环境 1 装有 Windows Server 2
  • pssh远程批量执行命令

    Pssh pssh是python写的可以并发在多台机器上批量执行命令的工具 它的用法可以媲美ansible的一些简单用法 执行起来速度比ansible快它支持文件并行复制 远程命令执行 杀掉远程主机上的进程等等 杀手锏是文件并行复制 当进行
  • 【Spring Boot】详解restful api

    目录 1 restful api 1 1 历史 1 2 内容 1 3 传参 2 Spring Boot中的Restful Api 1 restful api 1 1 历史 RESTful API Representational State
  • netty入门实例

    Netty 5用户指南 http ifeve com netty5 user guide Netty是一个NIO框架 使用它可以简单快速地开发网络应用程序 比如客户端和服务端的协议 Netty大大简化了网络程序的开发过程比如TCP和UDP的
  • PCL 获取格网最低点(C++详细过程版)

    格网最低点 一 概述 二 代码实现 三 结果展示 1 原始点云 2 滤波结果 一 概述 获取格网最低点在PCL里有现成的调用函数 具体算法原理和实现代码见 PCL GridMinimum获取栅格最低点 为充分了解GridMinimum算法实
  • Mysql binlog 日志

    Mysql binlog 日志 一 Binlog格式介绍 模式1 Row 日志中会记录成每一行数据被修改的形式 然后在slave端再对相同的数据进行修改 优点 row level模式下 bin log中可以不记录执行的sql语句的上下文相关
  • p-value,q-value,FDR

    假阴性错误 false negative errors 高水平的基因可能偶尔没有检测到 假阳性错误 false positive errors 低水平表达的基因由于扩增偏差 可能显得过于丰富 导致假阳性错误 错误发现率 False Disc
  • SQL语句常用记录_count()常用用法以及和group by的组合用法

    之前听大佬说过 会学习的人将资料写下来 不会学习的人妄想将资料记到脑子里 我觉得还是有一定道理的 好记性不如烂笔头 以此篇博客记录我在实际开发中常用到的sql语句 方便以后查看 相信很多用过sql的人 谈到sql语句第一时间想到的就是 se
  • js动态控制表单的tr,td的显示和隐藏

    无论是事先写好的 还是动态生成的 要找到指定的tr或td都必须知道其相关的一个属性 未必必须是id或name 然后无论是在一个table还是多个 table都可以通过document getElementsByTagNames tr 或td
  • 排序算法学习之路——快速排序

    快速排序是由东尼 霍尔所发展的一种排序算法 在平均状况下 排序 n 个项目要 n log n 次比较 在最坏状况下则需要 n2 次比较 但这种状况并不常见 事实上 快速排序通常明显比其他 n log n 算法更快 因为它的内部循环 inne
  • openGL之API学习(一零四)原子计数 Atomic Counters atomic_uint

    原子计数器 Atomic counters 是OpenGL4 2的新功能 能够用于渲染管线的各个阶段 完整的文档规范说明在GL ARB shader atomic counters 原子计数器是一块缓冲区 缓冲区对象 存放了一个或多个整型
  • 重磅直播丨迈向移动数字金融 —— 神州信息并购云核网络线上发布会

    关注神州信息官微 点击底部菜单栏及时关注
  • Vue3的常见30道核心面试题,会vue3的你,是不是的掌握了

    1 什么是Vue3 Vue3有哪些新增特性 答 Vue3是Vue js框架的最新版本 它增加了很多新特性 包括Composition API Teleport Suspense 和Fragment等 2 Vue3 Composition A
  • 第三节:数据类型——Object对象

    Object对象 由属性构成的无序集合 1 对象与原始类型的区别 对象有属性 对象对应的值可以是原始数据类型也可以是对象 对象的属性和对应的值这种表示方式称之为键值对 属性名又称之为键名 值称之为键值 键值可以是原始数据类型也可以是对象 也
  • 华为机试:统计大写字母个数

    一 题目 描述 找出给定字符串中大写字符 即 A Z 的个数 输入描述 本题含有多组样例输入 对于每组样例 输入一行 代表待统计的字符串 输出描述 对于每组样例 输出一个整数 代表字符串中大写字母的个数 二 输入输出示例 三 代码 incl
  • CPU与GPU计算耗时对比

    下面我们测试了分别使用CPU和GPU执行矩阵乘法得到的耗时差异 运行结果如下 注意 上面的运行揭示了下面几点 cpu c的第一次计算耗时明显超过后面的3次 gpu c的第一次计算耗时明显大大超过后面3次 GPU运行耗时差不多是CPU的1 1
  • shell-test判断

    一 条件判断参数详解 对于test和 中括号 判断语句来说 判断结果为真 则退出值为0 即echo 为0 即返回为true 其他为false 1 关于文件名 文件类型 的判断 e 该 文件名 是否存在 文件和目录都会返回为真 f 该 文件名