Shell脚本之if的用法

Shell脚本之if的用法

    • 1、if语句的格式
    • 2、if语句的conditon介绍
    • 3、应用举例

1、if语句的格式

1) if-elif-else语法格式

if [ condition1 ]; then  # 执行条件1的代码块  
elif [ condition2 ]; then  # 执行条件2的代码块  
else  # 执行条件都不满足时的代码块  
fi

2) if-else语法格式

if [ condition ]; then  # 执行条件的代码块  
else  # 执行条件不满足时的代码块  
fi

3) if语法格式

if [ condition ]; then  # 执行条件的代码块  
fi

2、if语句的conditon介绍

1)字符串比较

=:检测两个字符串是否相等,相等返回 true。例如,[ "$a" = "$b" ]。
!=:检测两个字符串是否不相等,不相等返回 true。例如,[ "$a" != "$b" ]。
-z:检测字符串长度是否为0,为0返回 true。例如,[ -z "$a" ]。
-n:检测字符串长度是否不为 0,不为 0 返回 true。例如,[ -n "$a" ]。
":检测字符串是否不为空,不为空返回 true。例如,[ "$a" ]。

2)文件存在性检查

-f:检查文件是否存在,存在返回 true。例如,[ -f "file.txt" ]。
-d:检查目录是否存在,存在返回 true。例如,[ -d "dir" ]。
-e:检查文件或目录是否存在,存在返回 true。例如,[ -e "file.txt" ]。

3)数值比较

-eq:检查两个数是否相等,相等返回 true。例如,[ $num -eq $anotherNum ]。
-ne:检查两个数是否不相等,不相等返回 true。例如,[ $num -ne $anotherNum ]。
-lt:检查第一个数是否小于第二个数,小于返回 true。例如,[ $num -lt $anotherNum ]。
-gt:检查第一个数是否大于第二个数,大于返回 true。例如,[ $num -gt $anotherNum ]。
-le:检查第一个数是否小于等于第二个数,小于等于返回 true。例如,[ $num -le $anotherNum ]。
-ge:检查第一个数是否大于等于第二个数,大于等于返回 true。例如,[ $num -ge $anotherNum ]。

3、应用举例

1)根据条件执行不同的代码块:if命令允许你根据给定的条件执行不同的代码块。你可以使用比较运算符(如-eq、-ne、-lt、-gt、-le、-ge)和逻辑运算符(如-a、-o、!)来构建条件表达式。根据条件的结果,你可以选择执行特定的代码块。

if [ $num -gt 10 ]; then  echo "数字大于10"  
elif [ $num -lt 10 ]; then  echo "数字小于10"  
else  echo "数字等于10"  
fi

2)检查文件或目录是否存在:使用if命令可以检查文件或目录是否存在,然后根据结果执行相应的操作

if [ -f "file.txt" ]; then  echo "文件存在"  
else  echo "文件不存在"  
fi

3)检查两个字符串是否相等:使用if命令可以比较两个字符串是否相等,并根据结果执行相应的操作

if [ "$str1" = "$str2" ]; then  echo "字符串相等"  
else  echo "字符串不相等"  
fi

4)检查变量是否为空:使用if命令可以检查变量是否为空,然后根据结果执行相应的操作

if [ -z "$variable" ]; then  echo "变量为空"  
else  echo "变量不为空"  
fi

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

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

相关文章

分布式搜索引擎01

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近的车 1.1.2.ELK…

Java函数式接口(Consumer、Function、Predicate、Supplier)详解及代码示例

函数式接口 java.util.function : Consumer :消费型函数接口 void accept(T t) Function :函数型接口 R apply(T t) Predicate :判断型接口 boolean test(T t) Supplier :供给型接口 T get() Consumer - 消费型函数接口 该接口代表了一个接受一个参数并且不返回结果的操作。…

YOLOV8 C++ opecv_dnn模块部署

废话不多说:opencv>4.7.0 opencv编译不做解释&#xff0c;需要的话翻看别的博主的编译教程 代码饱含V5,V7,V8部署内容 头文件yoloV8.h #pragma once #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; using name…

【Less-CSS】初识Less,使编写 CSS 变得简洁

初识Less&#xff0c;使编写 CSS 变得简洁 1.Less简述2.LESS 原理及使用方式3.示例4.less语法5.Easy Less插件 作为一门标记性语言&#xff0c;CSS 的语法相对简单&#xff0c;对使用者的要求较低&#xff0c;但同时也带来一些问题&#xff1a;CSS 需要书写大量看似没有逻辑的代…

Linux系统编程——线程的学习

学习参考博文&#xff1a; Linux多线程编程初探 Linux系统编程学习相关博文 Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——进程间通信的学习Linux系统编程——网络编程的学习 Linux系统编程——线程的学习 一、概述1. 进程与线程的区别2. 使…

Python爬虫从端到端抓取网页

网页抓取和 REST API 简介 网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档&#xff0c;但某些平台还提供 REST API 来以机器可读格式&#xff08;如 JSON&#xff09;检…

【C++】C++ 类中的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

文章目录 一、全局函数 与 成员函数 相互转化1、成员函数转为全局函数 - 多了一个参数2、全局函数转为成员函数 - 通过 this 指针隐藏操作数 二、有参构造函数设置默认参数值三、返回匿名对象与返回引用四、完整代码示例 一、全局函数 与 成员函数 相互转化 1、成员函数转为全局…

一、vue2的基础语法巩固

一、定义&#xff1a;是一个渐进式的JavaScript框架 二、特点&#xff1a; 减少了大量的DOM操作编写 &#xff0c;可以更专注于逻辑操作分离数据和界面的呈现&#xff0c;降低了代码耦合度(前端端分离)支持组件化开发&#xff0c;更利于中大型项目的代码组织 vue2核心功能&a…

【Linux】生产消费模型 + 线程池

文章目录 &#x1f4d6; 前言1. 生产消费模型2. 阻塞队列2.1 成员变量&#xff1a;2.2 入队(push)和出队(pop)&#xff1a;2.3 封装与测试运行&#xff1a;2.3 - 1 对代码进一步封装2.3 - 2 分配运算任务2.3 - 3 测试与运行 3. 循环阻塞队列3.1 POSIX信号量&#xff1a;3.1 - 1…

Python 解释器配置需要注意什么?

Python是一种广泛使用的编程语言&#xff0c;被用于开发各种类型的软件应用程序。在Python中&#xff0c;解释器是负责将Python代码转换为机器语言的程序。 因此&#xff0c;正确配置Python解释器是非常重要的&#xff0c;这有助于提高代码的性能、可读性和可维护性。下面将探…

vue3中使用editor.js

第一步安装依赖 npm i editorjs/editorjs --save 第二步创建editor.vue插件 <template><div><div id"editorjs" :style"width: props.width px;height: props.height px;"></div></div> </template> <scrip…

WKB近似

WKB方法用于研究一种特定类型的微分方程的全局性质 很有用这种特定的微分方程形如&#xff1a; 经过一些不是特别复杂的推导&#xff0c;我们可以得到他的WKB近似解。 该近似解的选择取决于函数和参数的性质同时&#xff0c;我们默认函数的定义域为当恒大于零,时&#xff1a; 当…

44.java教程

目录 一、Java 教程。 &#xff08;1&#xff09;我的第一个 JAVA 程序。 &#xff08;2&#xff09;Java 简介。 &#xff08;2.1&#xff09;java简介。 &#xff08;2.2&#xff09;主要特性。 &#xff08;2.3&#xff09;发展历史。 &#xff08;2.4&#xff09;J…

iOS应用程序的签名、重签名和安装测试

目录 前言 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 前言 ipa编译出来后&#xff0c;或者ipa进行修改后&#xff0c;需要进行重新签名才能安装到测试手机&#xff0c;或者提交app store供apple 商店审核上架。ipaguard有签名和重签名功能&…

吴恩达ChatGPT《Finetuning Large Language Models》笔记

课程地址&#xff1a;https://learn.deeplearning.ai/finetuning-large-language-models/lesson/1/introduction Introduction 动机&#xff1a;虽然编写提示词&#xff08;Prompt&#xff09;可以让LLM按照指示执行任务&#xff0c;比如提取文本中的关键词&#xff0c;或者对…

React中setState的原理及深层理解

1.为什么使用setState React并没有实现类似于Vue2中的Object.defineProperty或者Vue3中的Proxy的方式来监听数据的变化 我们必须通过setState来告知React数据已经发生了变化 setState方法是从Component中继承过来的。 2.setState异步更新 setState设计为异步&#xff0c;可…

PHY6230低成本遥控灯控芯片国产蓝牙BLE5.2 2.4G SoC

高性价比的低功耗高性能蓝牙5.2系统级芯片&#xff0c;适用多种PC/手机外设连接场景。 高性能多模射频收发机&#xff1a; 通过硬件模块的充分复用实现高性能多模数字收发机。发射机&#xff0c;最大发射功率10dBm&#xff1b;BLE 1Mbps速率接收机灵敏度达到-96dBm&#xff1…

解决Vue设置图片的动态src不生效的问题

一、问题描述 在vue项目中&#xff0c;想要动态设置img的src时&#xff0c;此时发现图片会加载失败。在Vue代码中是这样写的&#xff1a; 在Vue的data中是这样写的&#xff1a; 我的图片在根目录下的static里面&#xff1a; 但是在页面上这个图片却无法加载出来。 二、解决方案…

五、核支持向量机算法(NuSVC,Nu-Support Vector Classification)(有监督学习)

和支持向量分类(Nu-Support Vector Classification)&#xff0c;与 SVC 类似&#xff0c;但使用一个参数来控制支持向量的数量&#xff0c;其实现基于libsvm 一、算法思路 本质都是SVM中的一种优化&#xff0c;原理都类似&#xff0c;详细算法思路可以参考博文&#xff1a;三…

10分钟让你拿下Linux常用命令,网安运维测试人员必掌握!

文章目录 一、目录操作 1、批量操作 二、文件操作三、文件内容操作&#xff08;查看日志&#xff0c;更改配置文件&#xff09; 1、grep(检索文件内容)2、awk(数据统计)3、sed(替换文件内容)4、管道操作符|5、cut(数据裁剪) 四、系统日志位置五、创建与删除软连接六、压缩和解压…