shell if语句和test命令

shell if语句和test命令在shell中if条件判断语句和我们的C、C++、Java等语言是不同的,shell的if语句条件必须用[]括起来,另外[]里外都需要用空格与周围隔开(例如[a==b]),否则报错;另外与if配对的有elseif和else,如果我们要写这两个必须后面跟有东西,否则也会报错,在编程中不跟是可以的:if(a==b)printf("a=b");else{//什么都没有}但是s…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在shell中if条件判断语句和我们的C、C++、Java等语言是不同的,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a==b ]),否则报错;另外与if配对的有else if和else,如果我们要写这两个必须后面跟有东西,否则也会报错,在编程中不跟是可以的:

if(a==b)
printf("a=b");
else
{
//什么都没有
}

但是shell中是不可以的,简单的看一下shell里的if、else if和else的简单使用:

#!/bin/bash
a=10
b=20
if [ $a == $b ]#注意[]里外的空格
then #if条件成立后引出后续
echo 'a=b'
elif [ $a -gt $b] #如果使用else if 必须在最后多加一
fi #结束
then echo "a > b" #所有包含if的判断,都需要then引出后续
else#必须有操作,否则只写else报错
echo 'a<b' 
fi #if结束标志,必须有

以上就是简单的条件判断语句举例说明,下面我们来看看shell的test命令说明:Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。下面我们接着对这个三个方面进行举例说明:
1、数字:
这里写图片描述
这里的数值的比较条件分别为:

    -eq  是否相等
    -ne  是否不等
    -gt  是否大于
    -ge  是否大于等于
    -lt  是否小于
    -le  是否小于等于

如果变量名过长取值比较需要加[],如比较val和val1:$[val] -eq $[val1]
2、字符串比较:
这里写图片描述
字符串的比较:

    =  两个字符串是否相等
    != 两个字符转是否不等
    -n  字符串是否为空
    -z  字符串是否不空

字符串变量取值规则和数字一样,变量长的话加[]。
3、文件测试:
这里写图片描述
文件是针对单个文件的:

-e 文件名  如果文件存在则为真
-r 文件名  如果文件存在且可读则为真
-w 文件名  如果文件存在且可写则为真
-x 文件名  如果文件存在且可执行则为真
-s 文件名  如果文件存在且至少有一个字符则为真
-d 文件名  如果文件存在且为目录则为真
-f 文件名  如果文件存在且为普通文件则为真
-c 文件名  如果文件存在且为字符型特殊文件则为真
-b 文件名  如果文件存在且为块特殊文件则为真

具体展示就不在这里展示了,最后我们来看看执行结果:
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157489.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月27日 下午5:36
下一篇 2022年7月27日 下午5:36


相关推荐

  • Linux创建用户、设置密码、修改用户、删除用户命令

    Linux创建用户、设置密码、修改用户、删除用户命令

    2021年10月19日
    48
  • mysql联合索引详解

    mysql联合索引详解比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。b+tree结构如下:每一个磁盘块在mysql中是一个页,页大小是固定的,mysqlinnodb的默认的页大小是16k,每个索引会分配在页上的数量是由字段的大小决定。当字段值的长度越长,每一页上的数量就会越少,因此在一定数据量的情况下,索引的深度会越深,影响索引的查找效率。对于复合索引…

    2022年6月3日
    44
  • dos命令中DATE:~0,10输出日期格式名称格式/改为-

    dos命令中DATE:~0,10输出日期格式名称格式/改为-1、问题原因系统日期格式为/分隔,dos命令中%DATE:~0,10%的日期将会被当作多个文件夹处理2、解决方法1)、在控制面板中时钟、语言和区域中或者桌面右下角调整日期和时间格式,更改日历设置,日期格式由原来是yyyy/M/d改成yyyy-M-d2)、通用写法(年月日分开取):%DATE:~0,10%替换为%date:~0,4%%date:~5,2%%date:~8,2%3)、提前变…

    2026年1月30日
    6
  • 接私活必备的10个开源项目(it接私活)

    点击蓝色“GitHubDaily”关注我加个“星标”,每天下午18:35,带你逛GitHub!作者|SevDot来源|http://1t.click/VE8W…

    2022年4月11日
    69
  • 服务器交换机等系统性能测试,性能测试方案(示例)

    服务器交换机等系统性能测试,性能测试方案(示例)前面所说的测试分析等准备工作实际上最终目的是制定测试方案 测试方案一般包括 项目的简要说明 项目系统结构 项目的业务结构 以及项目的性能需求 测试环境数据以及测试策略方法 测试案例 测试人员进度安排以及测试风险预估等等 下面是一个一般的性能测试方案样例 在网页上写有排版问题 需要自行进行排版 性能测试方案文档修订记录 8 1 png 目录概述 5 术语 定义和缩略语 5 性能测试依据

    2026年3月18日
    2
  • C语言中什么是常量表达式_c语言整型表达式

    C语言中什么是常量表达式_c语言整型表达式常量表达式c语言,整型表达式和常量表达式中都没有变量参与吧?完整问题:好评回答:表达式没有变量参与?不是很清楚这个问题的定义,只是知道(ab)这种表达式下a和b都可以是变量Java编译器对于String常量表达式的优化是什么呢?完整问题:Java编译器对于String常量表达式的优化是什么呢?好评回答:首先把问题摆出来,先看这个代码Stringa=”ab”;Stringb=”a”…

    2026年4月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号