Shell学习脚本-if多分支结构

语法:

if 条件then指令集
else指令集
fi

特殊写法:

if [ -f "$file1" ]; then echo 1; else echo 0; fi

相当于:

[ -f "$file1" ] && echo 1 || echo 0

多分支结构:

if 条件then指令
elif 条件then指令
else指令
fiif 条件then指令
elif 条件then指令
elif 条件then指令
elif 条件then指令
else指令
fi

示例1:双分支if条件语句命令实现传参方式两个整数比较大小(可用条件小于或者大于等于)

[root@abc ~]# cat if21.sh
#!/bin/bashif [ $# -ne 2 ]thenecho "USAGE: $0 NUM1 NUM2"exit 1
fia=$1
b=$2expr $a + 0 &>/dev/null
RETVAL1=$?
expr $b + 0 &>/dev/null
RETVAL2=$?if [ $RETVAL1 -ne 0 -o $RETVAL2 -ne 0 ]thenecho "Please input two integer number again."exit 2
fiif [ $a -lt $b ]thenecho "$a is less than $b"
elif [ $a -gt $b ]thenecho "$a is greater than $b"
elseecho "$a is equal to $b"
fiexit 0

执行结果测试:

[root@abc ~]# sh if21.sh 20 20
20 is equal to 20
[root@abc ~]# sh if21.sh 10 20
10 is less than 20
[root@abc ~]# sh if21.sh 20 10
20 is greater than 10[root@abc ~]# sh if21.sh 1 s
Please input two integer number again.
[root@abc ~]# sh if21.sh s 1
Please input two integer number again.

对一段代码要进行充分的测试。要有点测试思想。

判断字符串是否为数字的多种思路:

1)使用sed加正则表达式。

删除一个字符串中的所有数字,就是把数字过滤掉,看字符串的长度是否为0,如果不为0,则说明不是整数。

[ -n "`echo chang123 | sed 's/[0-9]//g'`" ] && echo chars || echo int

2)变量的子串替换加正则表达式:

num=chang123
[ -z "`echo ${num//[0-9]/}"`" ] && echo int || echo char

这个地方需要复习下子串替换的内容。

num=521
[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] echo int || echo chars

3) 通过expr计算判断:

expr chang + 1 &>/dev/null
[ $? -eq 0 ] && echo int

4)利用=~符号判断:

[[ chang123 =~ ^[0-9]+$ ]] && echo int || echo char

5)利用bc判断字符串是否为整数:

echo chang123|bc
echo 123|bc

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

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

相关文章

python爬虫(三)_HTTP的请求和响应

HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。 SSL(Secure Socket Layer安全套…

【云计算知识库】什么是云?什么是云计算?计算的是什么?openstack是什么?nova计算组件?【持续更新中】

一、云计算常识科普 1.什么是云,什么是云计算,计算是指计算什么 云计算中的云不是天空中的云,在计算机的世界里,可以将它理解为一个群组,汇集在一起,只不过天上的云是雨水的群组,而云计算是计…

Windows 环境Kubernetes安装

目录 前言 安装 Docker 安装 Kubernetes Windows 安装 kubectl 介绍 安装 开启 Kubernetes 前言 Docker作为当前最流行的容器化平台,为Kubernetes提供了强大的容器化技术基础。Kubernetes与Docker的结合,使得容器化应用程序在大规模集群中得以简…

计算机视觉实验:图像处理综合-路沿检测

目录 实验步骤与过程 1. 路沿检测方法设计 2. 路沿检测方法实现 2.1 视频图像提取 2.2 图像预处理 2.3 兴趣区域提取 2.4 边缘检测 ​​​​​​​2.5 Hough变换 ​​​​​​​2.6 线条过滤与图像输出 3. 路沿检测结果展示 4. 其他路沿检测方法 实验结论或体会 实…

Linux CentOS 8 编译安装Apache Subversion

前言 距离上一篇发表已经过去了5年零2个多月,这次重新开始写技术博客,理由和原来一样,也就是想把自己学习和工作中遇到的问题和知识记录下来,今天记录一下Linux CentOS 8通过编译安装svn的过程。 下载SVN 下载地址:…

【WebRTC---源码篇】(二十二)WebRTC的混音处理

音频混音主力 音频混音主体主要通过(重采样) + (混音)为主 音频重采样 内容实现是在webrtc::voe中实现的,下面来对重采样全流程逐一分析 。 void RemixAndResample(const AudioFrame& src_frame,//源音频数据帧PushResampler<int16_t>* resampler,//重采样对…

内存分析工具之Mat

自定义类MatClazz内存个数为9521。当前对象占用内存为16个字节。不包括其属性bytes的字节数。 通过查看MatClazz引用的类之byte数组之bytes。其单个数组占用的字节数为10256。整个内存MatClazz中属性bytes占用的byte[]字节数为97746376&#xff0c;与直方图统计趋近。 通过选…

猴子吃桃(c++题解)

题目描述 一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半&#xff0c;又贪嘴多吃了一个&#xff1b;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n 天早上起来一看&#xff0c;只剩下 1 个桃子了。请问小猴买了几个桃子&#xff1f; 输入格式 输入一个正…

基于YOLOv8开发构建蝴蝶目标检测识别系统

在前面的一篇博文中已经很详细地描述了如何基于YOLOv8开发构建自己的个性化目标检测模型&#xff0c;感兴趣的话可以看下&#xff1a; 《基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】》 本文的主要目的就是基于YOLOv8来开发构建细粒度的蝴蝶目标…

前端与后端请求数据缓存的四种方式

前端与后端请求数据缓存的四种方式: 1,Cache-control 2,Expires 3,Etag/if-None-match 4,Last-modified/ if-Modified-Since 1,Cache-control 服务端再相响应中设置 Cache-Control:max-age 来告诉浏览器&#xff0c;再有效时间内max-age内重复请求&#xff0c;无需再次访…

MD-MTSP:斑马优化算法ZOA求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、斑马优化算法ZOA 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#xff09;Eva Trojovsk等人于2022年提出&#xff0c;其模拟斑马的觅食和对捕食者攻击的防御行为。斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#x…

spring总结

1.spring framework有哪些不同功能 轻量级&#xff1a;Spring 在代码量和透明度方面都很轻便IOC&#xff1a;控制反转 。通过控制反转实现了松散耦合&#xff0c;对象们给出了他们的依赖&#xff0c;而不是创建或查找依赖的对象们AOP&#xff1a;面向切面编程可以将应用业务逻…

高等数学教材啃书汇总难点(一)函数与极限

教材为理工科标配的同济大学第七版&#xff0c;本系列为一轮啃书&#xff0c;将必会的全部重难点悉数总结——尤其是各种晦涩的理论证明部分&#xff0c;考研数学一的选手&#xff0c;想冲击高分的话必须掌握。对于考研证明题部分&#xff0c;熟练掌握定义是必不可少的底层基础…

网络是怎样连接的

文章目录 概述英语缩略语一、Web浏览器二、协议栈、网卡三、集线器、交换机、路由器四、接入网、网络运营商五、防火墙、缓存服务器六、Web服务器总结 概述 从在浏览器中输入网址&#xff0c;到屏幕上显示出网页的内容&#xff0c;在这个只有几秒钟的过程中&#xff0c;很多硬…

Nautilus Chain 即将治理通证 NAUT ,生态发展进程加速

独特且优势明显的 Nautilus Chain 目前&#xff0c;行业内首个模块化底层 Nautilus Chain 已经上线主网&#xff0c;并且即将有超过 70 个应用原生部署在 Nautilus Chain 上。Nautilus Chain 本身是一个以 Layer3 为定位的区块链系统&#xff0c;其通过 Celestia 模块化底层来…

paddle实现获取pdf的内容

paddle实现获取pdf的内容 1. 环境安装2. 实现代码 源码链接 1. 环境安装 安装paddlepaddle gpu版本python -m pip install paddlepaddle-gpu -i https://pypi.tuna.tsinghua.edu.cn/simplecpu版本&#xff1a;python -m pip install paddlepaddle -i https://pypi.tuna.tsing…

vue3项目基于vue-router跳转到登录页面

创建项目 #创建项目 #选择vue3 选择npm vue create devops-front#安装vue-router 路由 npm install -g cnpm --registryhttps://registry.npmmirror.com cnpm install vue-router4 #启动项目 vue run serve app.vue 定义<router-view/> 路由入口 <template>&l…

opencv04-掩膜

opencv04-掩膜 抠图 #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <vector> #include <array> #include <algorithm>using namespace std; using namespace cv;int main() {str…

wine意大利红酒数据标准化案例

1.数据和环境准备 将通过意大利红酒的部分数据&#xff0c;调用scikit-learn包&#xff08;sklearn&#xff09;分别实现0-1标准化和z-score标准化&#xff0c;总结学习这两种标准化方法的特点。 本案例使用的环境为Anaconda Jupyter notebook。 2.数据说明 我们使用的是U…

js中css压缩方法

最近一直在做邮件html发送。其中邮件排版中&#xff0c;很多邮箱对css大小有要求&#xff0c;必需要有压缩css的办法&#xff0c;以前的做法是去各大在线压缩工具中压缩好后&#xff0c;再加入邮件html中。随着邮件html模板越做越多后&#xff0c;这个压缩就很繁琐&#xff0c;…