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}))"


测试:
Shell数学运算与双小括号_第1张图片Shell数学运算与双小括号_第2张图片Shell数学运算与双小括号_第3张图片
来个简单的:

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

在这里插入图片描述

你可能感兴趣的:(linux,centos,bash)