Shell数学运算与双小括号

本文介绍了Shell脚本中基本的数学运算和用户输入判断方法。包括使用((...))和$((...))进行整数运算,条件判断如逻辑与、逻辑或以及比较操作。同时,提供了一个脚本示例,该脚本接收用户输入的数字和运算符,检查输入是否为有效数字并执行计算。脚本还包含了对输入运算符的合法性检查,确保只使用了+、-、*、/四种运算符。

shell的一些基础命令,只支持整数的运算,小数的计算需要如bc这样的命令才支持

运算操作符与运算命令意义
((i=i+1))此种书法方法为运算后赋值法,即将i+1的运算结果赋值给变量i。注意,不能用"echo ((i=i+1))"的形式输出表达式的值,但可以用echo $((i=i+1))输出其值
i=$((i+1))可以在“(())”前加$符,表示将表达式运算后赋值给i
((8>7&&5==5))可以进行比较操作,还可以加入逻辑与和逻辑或,用于条件判断
echo $((2+1))需要直接输出运算表达式的运算结果时,可以在“(())”前加$符

特殊符号运算

a++ #先赋值后加一
++a #先加一后赋值

a-- #先赋值后减一
--a #先减一后赋值

数值计算脚本开发

开发一个,接受用户输入的数字,且对运算符号判断,最终得出结果的一个计算脚本
1、接受用户输入
2、对用户输入的是不是数字进行判断
3、对输入的运算符号进行判断
3、最终进行结果计算,输出打印

#!/bin/bash

#脚本开发

#如果用户输入的是非数字,就执行以下函数,提示用户应该输入什么
print_usage(){
	printf "please enter an integer\n"
	#给脚本的执行结果,赋予一个状态码,退出码
	exit 1
}

#接受用户输入的命令,-p参数后面写给用户看到的提示信息
#read -p “提示信息” 接受用户输入的变量

read -p "Please input your number: "	firstnum


#进行对用户输入判断 if 语句
#注意语法格式!!
#限制用户必须输入纯数字
#中括号里面前后必须有一个空格,是固定的语法
#-n 参数是if的语句,对字符串判断,如果字符串为空,条件就不成立,如果字符串不为空,条件成立
#假如用户输入“qwe123”
#sed的作用就是把上述字符串 “qwe123”进行替换,我把所有的数字都替换为空,那么就剩下其它非数字的内容了
#如果用户输入的纯数字, 123456
if [ -n "`echo $firstnum | sed 's/[0-9]//g'`" ]
	then
		print_usage
fi

#此时对运算符进行输入

read -p "Please input your operator:"	operator

#对运算符进行判断
#限制zai + - * /
if [ "${operator}" != "+" ] && [ "${operator}" != "=" ] && [ "${operator}" != "*" ] && [ "${operator}" != "/" ]
then
	echo "只允许输入 +-*/"
	exit 2
fi


#此时输入第二个数字
read -p "Please input your second number:"	secondnum

if [ -n "`echo $secondnum | sed 's/[0-9]//g'`" ]
	then
		print_usage
fi

#最后进行数值计算,利用双小括号计算
echo "${firstnum}${operator}${secondnum}结果是:$((${firstnum}${operator}${secondnum}))"


测试:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
来个简单的:

#!/bin/bash
echo $(($1))

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值