Shell系列(33) - 多分支if语句简介及计算器例子
多分支if条件语句
- if [ 条件判断式1 ]
- then
- 当条件判断式1成立时,执行程序1
- elif [ 条件判断式2 ]
- then
- 当条件判断式2成立时,执行程序2
- ...省略更多条件...
- else
- 当所有条件都不成立时,最后执行此程序
- fi
exit 自定义错误码:返回错误码,程序退出不再运行,后面的脚本程序不再执行
计算器
需求分析
- 有没有输入内容
- 判断输入的内容是不是数值
- 判断输入的运算符
- 执行运算符操作
脚本
- #!/bin/bash
- #声明result整型变量
- declare -i result
- #接收用户输入参数
- read -p "请输入第一个数字:" -t 30 num1
- read -p "请输入运算符:" -t 30 ope
- read -p "请输入第二个数字:" -t 30 num2
- #-n 判断用户输入是否非空,非空为真;-a 多个判断同时为真,返回为真
- if [ -n "$num1" -a -n "$ope" -a -n "$num2" ]
- then
- #使用sed替换,查找用户输入内容有数字的替换为空值
- test1=$(echo "$num1" | sed 's/[0-9]//g')
- test2=$(echo "$num2" | sed 's/[0-9]//g')
- #-z 判断字符是否为空,为空返回真
- if [ -z "$test1" -a -z "$test2" ]
- then
- if [ "$ope" == '*' ]
- then
- result=$(($num1*$num2))
- elif [ "$ope" == '+' ]
- then
- result=$(($num1+$num2))
- elif [ "$ope" == '-' ]
- then
- result=$(($num1-$num2))
- elif [ "$ope" == '/' ]
- then
- result=$(($num1/$num2))
- else
- echo "运算符格式输入错误"
- #返回错误码10
- exit 10
- fi
- else
- echo "数字输入错误"
- exit 11
- fi
- else
- echo "请输入数字"
- fi
- echo "$num1 $ope $num2 = $result"
Shell系列(33) - 多分支if语句简介及计算器例子的更多相关文章
- Shell系列(34) - 多分支case语句简介及实例
多分支case条件语句 概念 case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关 ...
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...
- Linux Shell系列教程之(一)Shell简介
本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
- shell编程之case分支语句
shell编程之case分支语句 case分支语句和if的多分支语句很相似. if多分支语句一般用在有(区间范围)的地方 :例如:0-100之间. if需要判断多个不同的条件. case的分支语句用在 ...
- (转)Linux Shell系列教程之(十四) Shell Select教程
本文属于<Linux Shell 系列教程>文章系列,该系列共包括以下 18 部分: Linux Shell系列教程之(一)Shell简介 Linux Shell系列教程之(二)第一个Sh ...
- Linux Shell系列教程
学习Linux Shell知识,就来Linux大学网(Linuxdaxue.com)! 本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格 ...
- Linux Shell系列教程之(十四) Shell Select教程
本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...
- Linux Shell系列教程之(九)Shell判断 if else 用法
本文是Linux Shell系列教程的第(九)篇,更多shell教程请看:Linux Shell系列教程 判断语句是每个语言都必不可少的关键语法,Shell命令当然也不例外.今天就给大家介绍下Shel ...
随机推荐
- clickhouse的windowFunnel(漏斗)
1.WindowFunnel 关于官网的解释: Returned value:Integer. The maximum number of consecutive triggered conditio ...
- 012 基于FPGA的网口通信实例设计【转载】
一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...
- Java角度制向弧度制转化
1.第一次写博客啊写博客啊写啊写0.0..0. 2.输入正多边形的边长·边数·求正多边形的面积 3.超级简单,可是在转弧度制那里有点懵,刚开始学Java,所以难免走弯路 4.代码如下: 1 publi ...
- NOIP 模拟 6 模板
题目 题解 这道题是一道启发式合并的题目,每次合并完重构一下线段树就可以,不用线段树合并. 以操作时间为下标,建立一颗线段树,维护小球的个数与小球的颜色数,最后线段树上二分查找. 我们先不用考虑每个节 ...
- FTP 大文件传输问题 解决
问题描述 将附件上传至FTP服务器,但是当附件过大,其大小为几百兆或1-2G时,会出现上传失败的现象 FTP上传原理解析 这里我们使用的是.Net的FtpWebRequest 创建FtpClient ...
- .Net Core NPOI读取Excel 并转为数据实体类
创建应用程序 这里直接创建Console程序 引用NPOI的NuGet包 PM> Install-Package NPOI -Version 2.5.1 直接Nuget包管理器添加 导入Exce ...
- .Net Core 集成 Redis
首先安装RedisServer 安装教程可参照 http://www.redis.cn/download.html 或者 https://www.runoob.com/redis/redis-inst ...
- 寻找最短路径Dijkstra算法
1 /** 2 * 1.对于T中的每个顶点u,找到u的具有最小权重的连接边.所有到u的连接边都存储在queues.get(u)中.queues.get(u).peek()返回拥有最小权值 3 * 的连 ...
- 网络流量预测入门(三)之LSTM预测网络流量
目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...
- promise的信任问题&控制反转
//信任问题 //第三方的某个库 function method(cb){ setTimeout(function(){ cb && cb(); //这个库的bug:函数被多调用了一次 ...