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…


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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ReverseFind(‘\\‘)函数

    ReverseFind(‘\\‘)函数此函数表示从右开始寻找最后一个“\\”的,并返回从左开始数的索引地址。与之相对的是Find(””)函数,表示从左开始寻找第一个“\\”,并返回从左开始数的索引地址。

    2022年6月26日
  • 架构设计(1)-谈谈架构

    架构设计(1)-谈谈架构1、什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开…

    2022年7月11日
  • Java的in.nextInt()和in.nextLine()方法的具体内涵[通俗易懂]

    Java的in.nextInt()和in.nextLine()方法的具体内涵[通俗易懂]本人也是刚开始学习java语言,在学习的过程中,老师让我们做一个模拟学生学籍管理系统的小程序。因为刚开始,做的是比较简单的,用switch语句做界面,然后配合Scanner接收输入的数字进行跳转,完成各类操作。因为跳转时输入的是数字,而跳转后的操作要输入字符串,比如:“选择1添加学生信息…输入添加学生的姓名…”这类的操作在测试的时候总是无法输入字符串像这个样子,先用nextInt()再用…

    2022年5月5日
  • 在TIM客户端删除被管理员解散的群组会话

    在TIM客户端删除被管理员解散的群组会话编者:李国帅qq:9611153微信lgs9611153时间:2020.6.1背景原因:TIM客户端会保留曾经参与过的会话,即便是会话的对话方,参与的群组已经不存在,会话和消息也不会移除,除非从本地删除。如果不想保留,就需要对TIM的逻辑进行处理。对于群组,如果群组被解散,可以在收到解散通知时,把群组会话移除。如果用户不在线时群组被解散,该如何做呢?想到并验证确实可用的方法:查询当前用户所在群组,删除那些过期的本地群组。背景问题流程:所需资源:Andr.

    2022年5月19日
  • HashMap底层实现原理_计算机底层原理

    HashMap底层实现原理_计算机底层原理文章目录前言一、快速入门二、使用步骤1.引入库2.读入数据总结学习内容:学习时间:学习产出:前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:以下是本篇文章对HashMap的实现原理内容,下面案例可供参考提示:以下是本篇文章正文内容,下面案例可供参考一、快速入门示例:有一定基础的小伙伴们可以选择性的跳过该步骤HashMap是Java程序员使用频率最高的用于映射键值对(key和value)处理的数据类型。随着JDK版本的跟新,JDK1.8对HashMap底层的实现进行

    2022年9月10日
  • shell语法简单介绍

    shell语法简单介绍

    2021年12月10日

发表回复

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

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