Linux学习之Shell中if-else

news2024/11/24 13:23:42

在Shell脚本中,if-else使用方法如下:

if [测试条件]
then 
       测试条件成立执行
else
       条件不成立执行
fi

cat << CCC >> testIfElse.sh表示只有遇到CCC才结束往testIfElse.sh写入文件。<< CCC表示后续的输入作为子命令或者子Shell的输入,直到命令又遇到CCC,再次返回到主调Shell,可将CCC其理解为分界符(delimiter),当然在不与系统其他命令冲突的话,可以定义其他分界符,比如EOFDelimiterEnd等。
下边的内容每输入一行就按一下回车键:

#!/bin/bash
if test 6 -gt 5
then
     echo "6 > 5"
else
     echo "wrong"
fi
CCC

在这里插入图片描述
chmod 777 testIfElse.sh为所有的用户加上读写执行权限,./testIfElse.sh进行执行。
在这里插入图片描述

只要写在thenelse之间的语句都是测试条件正确应该执行的,而写在elsefi之间都是测试条件错误应该执行的语句。
testIfElse1.sh里边的内容如下:

#!/bin/bash
# test with variable


echo "name ${0}"
echo "variable's number is $#"
echo "first variable is $1"

if [ $# -eq 2 ]
then
   echo "variable's number = 2"
   echo "the second variable is $2"
else
   echo "variable's number is not two"
   echo "wrong"
fi

在这里插入图片描述
这段代码首先把name +程序名输出,然后把variable's number is +输入的变量个数输出,之后输出first variable is +第一个变量名输出,上边的输出不管测试条件是否正确都会输出。
测试条件正确的话(即输入的变量个数等于2)会输出:

variable’s number = 2
the second variable is 第二个变量名

测试条件错误的话会输出:

variable’s number is not two
wrong

chmod 777 testIfElse1.sh为所有的用户加上读写执行权限,./testIfElse1.sh good learn进行执行输出内容如下:

name ./testIfElse1.sh
variable's number is 2
first variable is good
variable's number = 2
the second variable is learn

./testIfElse1.sh good learn "make progress"执行输出的内容如下:

name ./testIfElse1.sh
variable's number is 3
first variable is good
variable's number is not two
wrong

在这里插入图片描述
要是测试条件分支比较多的话,那么可以使用底下的格式:

if [测试条件]
then 
       测试条件成立执行
elif [测试条件]
then
		测试条件成立执行
else
       条件不成立执行动作
fi

testIfElse2.sh里边的内容如下:

#!/bin/bash
# test with variable


echo "name ${0}"
echo "variable's number is $#"
echo "first variable is $1"

if [ $# -eq 2 ]
then
   echo "variable's number = 2"
   echo "the second variable is $2"
elif [ $# -eq 3 ]
then
    echo "variable's number = 3"
    echo "the second variable is $3"
else
   echo "variable's number is not two"
   echo "wrong"
fi

基本逻辑就跟上边testIfElse1.sh一样,但是多了一段elif的判断逻辑,就是若输入的变量个数等于3的话,就会输出:

variable’s number = 3
the second variable is 第三个变量名

在这里插入图片描述

chmod 777 testIfElse2.sh为所有的用户加上读写执行权限,./testIfElse2.sh 111 222的执行结果如下:

name ./testIfElse2.sh
variable's number is 2
first variable is 111
variable's number = 2
the second variable is 222

在这里插入图片描述

./testIfElse2.sh 111 222 333的执行结果如下:

name ./testIfElse2.sh
variable's number is 3
first variable is 111
variable's number = 3
the second variable is 333

在这里插入图片描述

./testIfElse2.sh的执行结果如下:

name ./testIfElse2.sh
variable's number is 0
first variable is
variable's number is not two
wrong

在这里插入图片描述

此文章为7月Day 23学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JavaScript游戏开发] 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示)

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 文章目录 系列文章目录前言一、本章节效果图二、介绍2.1、左边区域2.2、右边区域 三、列计划3.1、目标3.1.1、完成跟随人物二维动态地图绘制(本…

MySQL知识2

十、数据库表的6种约束 建表同时添加约束&#xff1a; 主键约束和唯一&#xff1a; 默认值&#xff1a; 检查约束&#xff1a; 未能生效&#xff0c;原因&#xff1a;版本是5.7 在8.0之后&#xff1a;支持检查约束 主键自增可以写null&#xff0c;可以写default&#xff0c;可以…

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念&#xff1a; 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

LocalDateTime、OffsetDateTime、ZonedDateTime之间的关系

什么是LocalDateTime&#xff1f; ISO-8601日历系统中不带时区的日期时间。 该类不存储时区&#xff0c;所以适合日期的描述&#xff0c;比如用于生日、deadline等等。 但是如果没有偏移量/时区等附加信息&#xff0c;一个时间是不能表示时间线上的某一时刻的。 什么是Offset…

【网络编程】网络套接字udp通用服务器和客户端

1.预备知识 认识端口号 端口号(port)是传输层协议的内容&#xff1a; 端口号是一个2字节16位的整数(uint16)端口号用来标识主机上的一个进程IP地址port能够标识网络上的某一台主机和某一个进程一个端口号只能被一个进程占用 认识TCP协议 此处我们先对TCP(Transmission Con…

day34-Animated Countdown(动画倒计时)

50 天学习 50 个项目 - HTMLCSS and JavaScript day34-Animated Countdown&#xff08;动画倒计时&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

自动驾驶感知系统-超声波雷达

超声波雷达&#xff0c;是通过发射并接收40kHz的超声波&#xff0c;根据时间差算出障碍物距离。其测距精度是1~3cm.常见的超声波雷达有两种&#xff1a;第一种是安装在汽车前后保险杠上的&#xff0c;用于测量汽车前后障碍物的驻车雷达或倒车雷达&#xff0c;称为超声波驻车辅助…

易班开放应用授权重定向,出现跨域的解决方案

问题描述 今天开发H5网站需要接入易班&#xff0c;经过易班授权然后重定向&#xff08;code: 302&#xff09;&#xff0c;使用axios发请求&#xff0c;但是前后端均配置跨域的情况下&#xff0c;不管怎么弄都是一直跨域 但是我们看network&#xff0c;network中对应请求的res…

nvm安装(win/linux)

win安装nvm Win安装nvm1、下载nvm2、直接安装nvm-setup.exe3、cmd运行查看安装情况 Linux安装nvm1、下载nvm安装包2、安装及配置环境变量3、查看安装情况 前端开发多个工程&#xff0c;node版本需要时不时的进行切换&#xff0c;如果重新下载安装nodejs会导致浪费很多无用的时间…

人群异常聚集检测告警算法 yolov5

人群异常聚集检测报警系统基于yolov5图像识别和数据分析技术&#xff0c;人群异常聚集检测告警算法通过在关键区域布设监控摄像头&#xff0c;实时监测人员的密集程度和行为动态,分析和判断人群密集程度是否超过预设阈值&#xff0c;一旦发现异常聚集&#xff0c;将自动发出信号…

Pytorch个人学习记录总结 03

目录 Transeforms的使用 常见的transforms Transeforms的使用 torchvision中的transeforms&#xff0c;主要是对图像进行变换&#xff08;预处理&#xff09;。from torchvision import transforms transeforms中常用的就是以下几种方法&#xff1a;&#xff08;Alt7可唤出…

FileNotFoundException:xxx(系统找不到指定的路径)

目录 前言 背景 解决方法 错误示例 前言 这次是有个两年前的项目吧&#xff0c;不知道为什么无法启动了。中间迭代了多个版本&#xff0c;现在另一个同事接手了&#xff0c;领导让看一下。因为时间间隔过长&#xff0c;问题处理比较费劲。其中有的是配置问题&#xff0c;比…

【Linux学习】超详细——进程(2)

三、进程状态 3.1 准备知识 进程阻塞&#xff1a;进程因为等待某种条件就绪&#xff0c;而导致的一种不推进的状态&#xff08;例如进程卡顿&#xff09;&#xff0c;因而阻塞一定是在等待某种资源。为什么阻塞&#xff1f;进程需要通过等待的方式&#xff0c;等具体的资源被别…

SpringCloudAlibaba微服务实战系列(二)Nacos配置中心

SpringCloudAlibaba Nacos配置中心 在java代码中或者在配置文件中写配置&#xff0c;是最不雅的&#xff0c;意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中&#xff0c;每次修改了配置后只需要重启一次服务即可。话不多说&#xff0c;直接干货拉…

java实现ffmpeg音频文件分割

项目中需要将视频会议中录入的音频文件通过阿里云语音识别为文件&#xff0c;但是阿里云语音识别对音频大小有限制&#xff0c;因此通过ffmpeg将大音频文件分割为几个短音频文件&#xff0c;并进行语音识别操作。 代码如下&#xff1a; package com.vion.utils; import java.i…

openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句

文章目录 openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句18.1 语法格式18.2 参数说明18.3 示例 openGauss学习笔记-18 openGauss 简单数据管理-WHERE子句 当我们需要根据指定条件从表中查询数据时&#xff0c;就可以在SELECT语句中添加WHERE子句&#xff0c;从而过滤…

Install Ansible on CentOS 8

环境准备&#xff1a; 1.至少俩台linux主机&#xff0c;一台是控制节点&#xff0c;一台是受控节点 2.控制节点和受控节点都需要安装Python36 3.控制节点需要安装ansible 4.控制节点需要获得受控节点的普通用户或root用户的权限&#xff0c;控制节点需要ssh客户端&#xff0c;…

24考研数据结构-——绪论

数据结构 引用文章第一章&#xff1a;绪论1.0 数据结构在学什么1.1 数据结构的基本概念1.2 数据结构的三要素1.3 算法的基本概念 引用文章 在此基础上增加自己的学习过程: 《王道》数据结构笔记整理2022 1.2数据结构三要素——逻辑结构和物理结构与数据运算之间的关系 1.3抽象…

JMeter+提取token变成全局变量

注&#xff1a;没打码&#xff0c;就代码乱写的接口&#xff0c;具体请按照你要跑的接口来输入值 一、创建线程组 二、配置HTTP请求默认值 IP地址一模一样&#xff0c;可以配置一个默认值&#xff0c;就不用每次都输入IP地址了 三、配置登陆ip 配置登陆地址&#xff0c;通过…