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 ...
随机推荐
- Block循环引用详解
前言 在项目中经常用到block,使用不当就很容易因为循环引用而造成内存泄漏.本文分析了block循环引用形成原因以及处理办法,如果有什么不对或者疑问请留言. 什么情况下block会造成循环引用 bl ...
- linux /etc/passwd详解
文件概述 Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中绝大部分的用户基本信息,并不是所有,所有用户都可以对此文件执行读操作.(如果通过其他方式创建管理的用户名. ...
- KVM常用命令
查看所有虚拟机状态:执行virsh list –all 启动该虚拟机:执行virsh start test 关机虚拟机:virsh shutdown 此方法为正常关机方法,需要一段才能关机关闭 ...
- TP6 服务器响应500时没有错误信息的解决方案
重点!!!! 首先,确认你的电脑管理员账户是否含有中文!!!!!!就像下面这种:所以出现了没有错误提示 查看nginx日志显示\vendor\topthink\framework\src\thi ...
- flutter 常用视图组件
1.custom class widget main.dart 1 import 'package:flutter/material.dart'; 2 import './pages/custom.d ...
- springboot中添加事务注解
1.首先在service层中的方法前添加@Transactional @Service public class UserService { @Autowired private UserMapper ...
- 对集合使用Comparator
1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 4 /** 5 * 对集合使用Comparator,不改变对象的自 ...
- HCNP Routing&Switching之OSPF LSA类型
前文我们了解了OSPF中的虚连接相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15202348.html:今天我们来聊一聊OSPF数据包中LSA类型相 ...
- mybatis相关函数
MyBatis中的if....else...表示方法 <choose> <when test=""> //... </when> <oth ...
- 测试Kaggle kernel commit 是否会删除以前的output
在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...