linux shell脚本 条件语句

test

        测试文本的表达式 是否成立

        格式: test    条件表达式

        格式: [    条件表达式    ]   ([] 内要空格 ,不然不生效)

        如何测试?

               [ 操作符  文件或目录 ]

                echo $?

                返回值是0 正确,返回值非0 不正确

        操作符:

                -d  测试是否为目录

                -a 测试目录或文件是否存在

                -e 测试目录或文件是否存在(推荐使用这个,-a有bug)

                -f  测试是否是文件

                -r  测试当前用户是否有权限读取

                -w 测试当前用户是否有权限写入

                -x 测试当前用户是否有权限执行

                -L 测试是否是软连接文件

比较整数数值

                [整数1    操作符     整数2 ] 

                echo $?

                0正确   非0 不正确

               操作符

                -eq       等于

                -ne       不等于

                -gt        大于

                -lt         小于

                -le        小于等于

                -ge        大于等于

字符串比较

        常用的测试操作符

               =        字符串内容相同

               !=        字符串内容不同,!表示相反的意思

               -z        字符串内容是否存在

               -n        字符是否存在

        格式

              [ 字符串1 操作符  字符串2  ] 

               echo $?

                0正确  非0不正确

逻辑测试

        常见条件

              -a或&&:  逻辑与,"而且"的意思 两边条件为真才为真

              -o或 | |:逻辑或,"或者"的意思 有一个条条件为真就为真

              !:逻辑否

      && 与

        a && b         同时满足a和b命令的要求,才会返回正确,有一方不满足,便是假

      | | 或

        a | | b           只要有一个结果为真,结果比为真。a结果为真,总结果肯定为真,

                            因此不需要执行b。a结果为假,b就需要进行判断,才能得到真正的结果

       a && b | | c    a如果为真,则执行b 就不会执行c   a如果为假,就不会执行b,就需要执行c

双中括号

                [ [ 表达式 条件  表达式 ] ]

                条件         ==        通配符

                                =~        正则表达式

() {}        

            (a,b....) 和 {a,b....}  都可以将命令组合在一起,批量执行

           ()会开启子进程  {}不会开启子进程

if语句

             分支结构

                 单分支

                      if 判断条件;

                      then       

                      条件为真的分支代码

                      fi

                双分支

                      if 判断条件;

                        then

                       条件为真的分支代码

                        else

                        条件为假的分支代码

                        fi

                多分支

                       if 判断条件1;

                         then

                        条件1为真的分支代码

                       elif 判断条件2;

                          then

                        条件2为真的分支代码

                       elif 判断条件3;

                          then

                        条件3为真的分支代码

                        ....

                        else

                           以上条件都不符合,则执行的代码

                        fi

case语句

        格式

             read  -p    i

            case  $i    in

               PAT1)        

                   分支1

                    ;;

               PAT2)

                   分支2

                   ;;

                ...

                *)

                ;;

                easc

        case支持glob风格的通配符:
                        * 任意长度任意字符
                        ? 任意单个字符
                        [0-9] 指定范围内的任意单个字符
                        |   或者,如: a|b               

echo

          echo   "abcdfg"  

             abcdfg

            输出abcdfg

        选项

               -n  不换行输出

               -e   表示输出转义符

            

" " 内的可用选项

\r光标移至行首,并且不换行
\s当前shell的名称,如bash
\t插入Tab键,制表符
\n输出换行
\f换行,但光标仍停留在原处
\表示插入"\"本身转义
\b表示退格 不显示前一个字符
\c抑制更多的输出或不换行

                            

        

                  

     

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

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

相关文章

Unity——FSM有限状态机

有限状态机就是有限个切换状态的条件,要制作有限状态机,有几个必要点:状态抽象类、FSMSystem类、FSMSystem实现类、FSM状态实现类。 每一个控制者都有一个状态机,每一个状态机都有其包含的状态,每一个状态都有能转换的…

运维之道—生产环境安装mysql

目录 1.前言 2.部署安装 2.1 下载mysql5.7版本的yum仓库 2.2 安装yum仓库 2.3 安装mysql-server 2.4 启动mysql-server 3. 生产配置 3.1 登录mysql 3.2 修改root账户密码 3.3 配置mysql

JFinal项目搭建

JFinal项目搭建 JFinal项目搭建 JFinal项目搭建 首先创建maven项目&#xff1a; 删掉报错的jsp页面&#xff1a; 在pom.xml中加入坐标&#xff1a; <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId>…

零基础学习【Mybatis Plus】这一篇就够了

学习目录 1. 快速入门1-1. 常用注解总结 1-2. 常用配置 2. 核心功能3. 扩展功能4. 插件功能 1. 快速入门 1-1. 常用注解 MybatisPlus中比较常用的几个注解如下&#xff1a; TableName: 用来指定表名Tableld: 用来指定表中的主键字段信息TableField: 用来指定表中的普通字段信…

基于openssl v3搭建ssl安全加固的c++ tcpserver

1 概述 tcp server和tcp client同时使用openssl库&#xff0c;可对通信双方流通的字节序列进行加解密&#xff0c;保障通信的安全。本文以c编写的tcp server和tcp client为例子&#xff0c;openssl的版本为v3。 2 安装openssl v3 2.1 安装 perl-IPC-Cmd openssl项目中的co…

AR 自回归模型

文章目录 总的代码ADF 检验(是否平稳)差分操作拟合AR 模型预测可视化总的代码 import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.ar_model import AutoReg from statsmodels.tsa.stattools import adfuller# 生成一个示例时间序…

在人工智能时代,如何利用AI达到行业领先地位?

人工智能很快将成为企业开展业务的一个必要环节。各企业都会具备AI战略&#xff0c;就像其具有社交媒体战略、品牌战略和人才战略等一样。 因此&#xff0c;如果企业希望在竞争中脱颖而出、获得优势&#xff0c;不能只是使用AI&#xff0c;而是要以AI为先导&#xff0c;创造行业…

pyqtgraph 设置线程阻塞

pyqtgraph 设置线程阻塞 如果想要在 PyQtGraph 应用程序中设置线程阻塞以模拟一个耗时长的任务&#xff0c;可以使用 time.sleep 或者其他会阻塞线程的操作。以下是一个简单的示例&#xff1a; import pyqtgraph as pg from PyQt5.QtCore import Qt, QThread, pyqtSignal imp…

基于springboot+vue的海滨体育馆管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

邮件服务支持Exchange协议,资产历史账号支持设置保留数量,JumpServer堡垒机v3.10.2 LTS版本发布

2024年1月22日&#xff0c;JumpServer开源堡垒机正式发布v3.10.2 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和维护&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS版本&#xff0c;以获得更佳的使用体验。 在v3.10.2 LTS版本中&…

美赛world排版技巧

正在跳转 1、问&#xff1a;Word里边怎样设置每页不同的页眉&#xff1f;如何使不同的章节显示的页眉不同&#xff1f; 答&#xff1a;分节&#xff0c;每节可以设置不同的页眉。文件——页面设置——版式——页眉和页脚——首页不同 2、问&#xff1a;请问Word中怎样让每一…

04 经典的OSPF

思维导图的方式回顾OSPF 什么是OSPF?为什么需要OSPF? - 华为 (huawei.com) 1 ospf 领行学习思维导图 1.1 ospf 的工作过程 建立领据表同步数据库计算路由表1.2 ospf 的状态

用JavaFX写了一个简易的管理系统

文章目录 前言正文一、最终效果1.1 主页面1.2 动物管理页面-初始化1.3 动物管理页面-修改&新增1.4 动物管理页面-删除&批量删除 二、核心代码展示2.1 启动类2.2 数据库配置-db.setting2.3 日志文本域组件2.4 自定义表格视图组件2.5 自定义分页组件2.6 动物管理页面2.7 …

MySQL怎么根据当前时间获取连续十二个月统计数据

需求 在某些业务场景中&#xff0c;需要后台获取连续十二个月的统计数据&#xff0c;如下图&#xff1a; 解决方式 1、创建一张临时表&#xff0c;在表中插入序号数据 该表的最大数量决定统计返回的最大条数 CREATE TABLE sys_redundancy (id bigint(22) NOT NULL AUTO_I…

uniapp 链接跳转(内部跳转和外部跳转)

使用uniapp的超链接跳转在微信小程序中会出现复制链接在外面在跳转如图 这样的客户体验感不好 我们需要可以直接跳转查看 思路&#xff1a;webview 1.先在自己uniapp项目pages.json建一个内部页面webview.vue 在page.json里面指向我们跳转的这个内部路径(这个创建页面会自动…

中文自然语言处理(NLP)中的命名实体识别(NER)任务中,加入注意力(attention)机制

在中文自然语言处理&#xff08;NLP&#xff09;中的命名实体识别&#xff08;NER&#xff09;任务中&#xff0c;加入注意力&#xff08;attention&#xff09;机制可以极大地提升模型的性能。注意力机制可以帮助模型更好地捕捉序列中的关键信息和上下文依赖关系&#xff0c;从…

【Conda】超详细的linux-conda环境安装教程

背景 最近被python各个版本环境整的头晕目眩&#xff0c;本来就不是专长做python的&#xff0c;切换各种版本着实不好操作&#xff0c;因此想到了conda这个好工具&#xff0c;以下是对conda的相关理解和搭建的详细过程&#xff0c;做个记录。 Conda简介 Conda是在Windows、m…

SwiftUI 打造酷炫流光边框 + 微光滑动闪烁的 3D 透视滚动卡片墙

功能需求 有时候我们希望自己的 App 能向用户展示与众不同、富有创造力的酷炫视觉效果: 如上图所示,我们制作了一款流光边框 + 微光滑动闪烁的 3D 透视卡片滚动效果。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求1. 3D 透视滚动2. 灵动边框流光效果3. 背景…

黑马苍穹外卖学习Day10

文章目录 Spring Task介绍cron表达式入门案例 订单状态定时处理需求分析代码开发功能测试 WebSocket介绍入门案例 来单提醒需求分析代码开发 客户催单需求分析代码开发 Spring Task 介绍 cron表达式 入门案例 订单状态定时处理 需求分析 代码开发 新建一个task包里面编写代码…

ShardingSphere数据库中间件

数据库中的数据量猛增&#xff0c;访问性能也变慢了&#xff0c;优化迫在眉睫 ? 1. 关系型数据库本身比较容易成为系统瓶颈&#xff1a;单机存储容量、数据库连接数、处理能力都有限。 2. 当单表的数据量达到 1000W 或 100G 以后&#xff0c;由于查询维度较多&#xff0c;即…