shell语言判断

目录

判断:

shell条件测试

数值比较

文件测试

字符串比较

and和or

流程控制if:

单分支结构:

双分支结构

多分支结构

嵌套结构

调试脚本

注意:  

  测试语法:

模式匹配:case


判断:

任何编程语言离不开判断(流控)
        

shell条件测试


数值比较

[ -gt ]  大于
[ -lt ]  小于
[ -eq ]  等于
[ -ne ]  不等于
[ -ge ]  大于等于
[ -le ]  小于等于

文件测试

-f filename :当filename存在时返回真
-b filename :当filename存在并且是块文件时返回真
-d pathname :当pathname存在并且是一个目录时返回真
-h filename :当filename存在并且是符号链接文件时返回真
-c filename :当filename存在并且是字符文件时返回真
-e pathname :当由pathname指定的文件或目录存在时返回真
-g pathname :当由pathname指定的文件或目录存在并且设置了SGID位时返回真  (SGID一种特殊的权限)
-k pathname :当由pathname指定的文件或目录存在并且设置了"粘滞"位时返回真
-p filename :当filename存在并且是命名管道时返回真
-r pathname :当由pathname指定的文件或目录存在并且可读时返回真
-s filename :当filename存在并且文件大小大于0时返回真
-S filename :当filename存在并且是socket时返回真
-t fd :当fd是与终端设备相关联的文件描述符时返回真
-w pathname :当由pathname指定的文件或目录存在并且可写时返回真
-x pathname :当由pathname指定的文件或目录存在并且可执行时时返回真
-O pathname :当由pathname存在并且被当前进程的有效用户id的用户拥有时返回真
-G pathname :当由pathname存在并且属于当前进程的有效用户id的用户的用户组时返回真


字符串比较

比较字符串的时候字符串建议加上双引号
=:等于
!=:不等于
-z:判断字符长度是为0
-n:判断字符长度不是为0


and和or

当条件测试比较复杂时,需要多个条件同时成立,就需要混合条件测试
逻辑的(and)与(or)&&逻辑的and的意思,-a,两个条件同时完成时成立,为真
||逻辑的or的意思,-o,两个条件一个成立,为真表示方法:
[ 条件一 -a 条件二 ]
[[ 条件二 && 条件一 ]]
[ 条件一] && [条件二 ][ 条件一 -o 条件二 ]
[[ 条件二 || 条件一 ]]
[ 条件一] || [条件二 ]

流程控制if:

单分支结构:
if [ 条件 ] ; then符合该条件执行的语句
fi

双分支结构
表示方法一:
if [ 条件 ] then符合该条件执行的语句else不符合该条件执行的语句fi表示方法二:
if 命令then命令返回结果为真else命令返回结果为假
fi

多分支结构
if [ 条件1 ] then符合该条件执行的语句elif [ 条件2 ]then    符合该条件执行的语句elif [ 条件3 ]then    符合该条件执行的语句else不符合该条件执行的语句
fi
嵌套结构
if[条件测试1] then命令序列if[条件测试2]then命令序列else命令序列fi    else命令序列
fi
调试脚本
sh -n 文件名    //仅调试脚本中的语法错误
sh -x 文件名    //逐句语句追踪
sh -v 文件名    //显示执行过程详细信息
sh -vx 文件名   //以调试的方式执行,查询整个执行过程,第一行是计算机看到的第二行是计算机执行的第三行是计算机输出的

注意:  

1.[]表示条件测试,这里的空格很重要
2.在shell中,then和fi是分开的语句,如果要放在一行,需要分号隔开
3.注意if判断中对变量的处理,需要加引号
4.判断不支持浮点值
5.如果单独使用<或者>系统会认为是重定向,如果要使用,要对这些符号转意
6.默认运行if语句中的命令,所产生的错误信息,会出现在脚本的输出结果中,一般会使用&>/dev/null
7.使用-n或者-z来检查长度时候,没有定义的变量也为0
8.空变量和没有初始化的变量会对shell脚本造成灾难性的影响,再不确定变量内容时,可以使用-n或者-z测试一下
9.$?变量包含了之前执行命令的退出状态,最近完成的前台进程

  
测试语法:

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


模式匹配:case

shell编程中if和case都是用来做流控的

case格式
case 变量 in 
模式1)命令序列1
;;模式2)命令序列2
;;模式3)命令序列3
;;*)无匹配命令序列后
;;
esac

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

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

相关文章

Vue 防止页面闪烁 v-cloak

v-cloak 指令&#xff1a;用于解决页面渲染的过程中&#xff0c;出现闪烁的问题。 注&#xff1a;当网速较慢&#xff0c;来不及渲染时&#xff0c;页面上就会出现源码【例如&#xff1a;{{ xxx }} 】。 语法格式&#xff1a; <template><div v-cloak>内容</d…

[python库] mistune库的基本使用

前言 mistune库是一个解析Markdown的利器&#xff0c;使用起来非常简单。当我们想要解析Markdown格式的文档时&#xff0c;只需两步就能将其转换成html格式。如下&#xff1a; import mistune mistune.html(YOUR_MARKDOWN_TEXT)安装方式也非常简单&#xff0c;dddd&#xff1…

JavaSE基础50题:10. 计算1/1-1/2+1/3-……+1/99-1/100的值(两种方法)

概述 计算1/1 - 1/2 1/3 - …… 1/99 - 1/100的值。 当分母为偶数时&#xff0c;符号是负的&#xff0c;放分母为奇数时&#xff0c;符号是负的。 方法一 用 flg 做了一个正负交替 【代码】 public static double func() {double sum 0;int flg 1; //设置正负号的for (i…

java中可重入锁是什么?

可重入锁是一种支持同一个线程多次获得同一把锁的锁机制。在 Java 中&#xff0c;synchronized 关键字和 ReentrantLock 类都支持可重入锁。 可重入锁的主要特点是允许同一个线程多次获取同一把锁&#xff0c;而不会导致死锁。这使得在进行递归调用或者多层调用的情况下&#…

CopyOnWriteArraySet怎么用

简介 CopyOnWriteArraySet是一个线程安全的无序集合&#xff0c;它基于“写时复制”的思想实现。它继承自AbstractSet&#xff0c;可以将其理解成线程安全的HashSet。 CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程…

力扣每日一题day29[102. 二叉树的层序遍历]

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&#xff1a; 输入&…

『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建PG开源数据库

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器&#xff08;Elastic Compute Cloud&#xff09;是亚马…

配置Ubuntu18.04使iptables规则重启系统后仍然有效

第一步&#xff1a;保存iptables规则到文件 /etc/iptables.rules iptables-save > /etc/iptables.rules 第二步&#xff1a;将如下代码写入 /etc/rc.local #!/bin/sh iptables-restore < /etc/iptables.rules 第三步&#xff1a;为 /etc/rc.local 文件赋可执行权限 …

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

VUE.js

后端&#xff1a; BookMapper&#xff1a; <select id"selectBybookname" resultMap"BaseResultMap" parameterType"java.lang.String" >select<include refid"Base_Column_List" />from t_book<where><if tes…

NOIP2014提高组第二轮day1 - T3:飞扬的小鸟

#题目链接 [NOIP2014 提高组] 飞扬的小鸟 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度&#xff0c;让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话&#xff0c;便宣告失败…

深度解析 Kafka 消息保证机制

Kafka作为分布式流处理平台的重要组成部分&#xff0c;其消息保证机制是保障数据可靠性、一致性和顺序性的核心。在本文中&#xff0c;将深入探讨Kafka的消息保证机制&#xff0c;并通过丰富的示例代码展示其在实际应用中的强大功能。 生产者端消息保证 1 At Most Once &quo…

pip的常用命令

安装、卸载、更新包&#xff1a;pip install [package-name]&#xff0c;pip uninstall [package-name]&#xff0c;pip install --upgrade [package-name]。升级pip&#xff1a;pip install --upgrade pip。查看已安装的包&#xff1a;pip list&#xff0c;pip list --outdate…

ubuntu22.04 显卡驱动最简单的安装方法

1.拉取可选择安装的显卡驱动版本 sudo apt-get purge nvidia* #apt 的 update 和 upgrade 的区别 #apt update 命令只会获得系统上所有包的最新信息&#xff0c;并不会下载或者安装任何一个包。 #apt upgrade 命令来把这些包下载和升级到最新版本。 2.sudo apt update 3.安装…

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-GRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-GRU-Multihead-Attention…

TCP通讯

TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点 它的优点对比于UDP来说就是可靠一点 因为它的通讯方式是需要先发送消息 看看客户端是否能够接收到消息 如果没有回复消息的话 服务端 就不会发出文件 等待客户端回复消息&#xff0c…

结构体,自定义类型

目录 结构体 结构体的声明 结构体的自引用 结构体的定义和初始化 结构体内存对齐 ​编辑 结构体的对齐规则&#xff1a; 为什么存在内存对齐&#xff1f; 修改默认对齐数 结构体传参 位段 什么是位段 位段的内存分配 位段的跨平台问题 枚举 联合&#xff08;共用体…

文件管理:每个文件夹只移入1个文件要怎样操作?批量移动文件技巧

在文件管理过程中&#xff0c;有时要将多个文件分别移动到不同的文件夹中&#xff0c;每个文件夹只包含一个文件。这样的需求可能出现在许多场景中&#xff0c;比如整理文件、备份资料或者进行特定的项目处理。如果每个手动去移动文件就会出现丢失的情况&#xff0c;以及太过耗…

括号匹配的检验(数据结构实训)

题目&#xff1a; 括号匹配的检验 标准输入输出 题目描述&#xff1a; 采用栈实现,练习进栈入栈函数的编写. 输入&#xff1a; 输入的第一行包含一个数,n n表示要用例的个数 接下来是n行由括号构成的字符串&#xff0c;包含‘&#xff08;’、‘&#xff09;’、‘[’、‘]’。…

【PTA-C语言】编程练习4 - 数组Ⅱ

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习4 - 数组Ⅱ&#xff08;8~15&#xff09; 7-8 2048游戏模拟&#xff08;2&#xff09;--向下移位合并&#xff08;分数 15&#xff09;7-9 二进制数据转换成十进制数&#xff08;分数 15&#xff09…