shell-变量的数值计算

变量的数值计算觉的有如下命令

(())、let、expr、bc、$[]

下面看看数值计算的运算符

(())此法很常用且效率高,用于执行整数型的计算,不支持浮点型。

如图

[[email protected] ~]# ((a=1+2**3-4%3))

[[email protected] ~]# echo $a

8

[[email protected] ~]# b=$((1+2**3-4%3))

[[email protected] ~]# echo $b

8

[[email protected] ~]#

其中2**3是2的3次方

[[email protected] ~]# echo $((a++))

8

[[email protected] ~]# echo $a

9

[[email protected] ~]# echo $((a--))

9

[[email protected] ~]# echo $a

8

[[email protected] ~]# echo $((++a))

9

[[email protected] ~]# echo $a

9

[[email protected] ~]# echo $((--a))

8

[[email protected] ~]# echo $a

8

[[email protected] ~]#

由上面可以看到,$((a++))是先输出a原来的值再去加,然后我们echo $a的时候,实际上就是输出变量a运算后的值啦。

记忆方法:变量在前,先输出变量值,变量在后,就是先去处后输出变量的值

上面都是整数的,如果有小数的话就会报错了,如果想用小数的话可以用bc命令

[[email protected] ~]# cat test.sh

#!/bin/bash

a=6

b=2

echo "a-b=$(( $a-$b ))"

echo "a-b=$(( $a+$b ))"

echo "a-b=$(( $a*$b ))"

echo "a-b=$(( $a/$b ))"

echo "a-b=$(( $a**$b ))"

echo "a-b=$(( $a%$b ))"

[[email protected] ~]# sh test.sh

a-b=4

a-b=8

a-b=12

a-b=3

a-b=36

a-b=0

如果你想通过命令行传参的方式实现上面的运算的话可以修改脚本为以下的

#!/bin/bash

a=$1

b=$2

echo "a-b=$(( $a-$b ))"

echo "a-b=$(( $a+$b ))"

echo "a-b=$(( $a*$b ))"

echo "a-b=$(( $a/$b ))"

echo "a-b=$(( $a**$b ))"

echo "a-b=$(( $a%$b ))"

如图:执行命令

"test.sh" 9L, 167C 已写入

[[email protected] ~]# sh test.sh 8 2

a-b=6

a-b=10

a-b=16

a-b=4

a-b=64

a-b=0

[[email protected] ~]# sh test.sh 8 3

a-b=5

a-b=11

a-b=24

a-b=2

a-b=512

a-b=2

下面我们做一个小的计算器

[[email protected] shell]# cat compute.sh

#!/bin/bash

echo $(($1$2$3))

[[email protected] shell]# sh compute.sh 1+2

3

[[email protected] shell]#

当然这个是比较简单的,很多的bug我们可以看看其他人写的

http://chenhao6.blog.51cto.com/6228054/1232070

其中的一些代码就写的不错,如下

#!/bin/bash
echo " ----------------------------------"
echo "|这是一个简单的整数计算器,作者YUAN|"
echo " ----------------------------------"
echo
while :
do
read -p  "请输入一个整数: " nu
expr $nu + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第一个数是$nu"
       break

else
       echo "您输入的$nu不是整数请重新输入"
fi
done

while :
do
read -p  "请输入二个整数: " nu2
expr $nu2 + 0 &> /dev/null
if [ $? -eq 0 ]
 then
       echo "第二个数是$nu2"
       break
else
       echo "您输入的$nu2不是整数请重新输入"
fi
done
echo  "------------------"
echo "|  1.加法          |"
echo "|  2.减法          |"
echo "|  3.乘法         |"
echo "|  4.除法         |"
echo  "------------------"
read -p "请输入您想执行的算法:" me
case $me in
       "1")
sum=`expr $nu + $nu2`
echo "$nu+$nu2=$sum"
;;
       "2")
jian=`expr $nu - $nu2`
echo "$nu-$nu2=$jian"
;;
       "3")
chen=`expr $nu \* $nu2`
echo "$nu*$nu2=$chen"
;;
       "4")
chu=`expr $nu / $nu2`
echo "$nu/$nu2=$chu"
esac

时间: 2024-10-17 06:28:31

shell-变量的数值计算的相关文章

《跟老男孩学Linux运维之shell编程实战》-第四章 变量的数值计算

本文讲解shell编程中变量的数值计算. 1.常见的算术运算符: 提示: 此处对于我自己来说++.--比较难理解,之前一看到脚本中有这些符号,就看不懂了,所以在此举例说明一下: [[email protected] ~]# a=10                  ==>定义变量a[[email protected] ~]# echo $((a++)) ==>如果a在运算符++或--的前面,那么输出整个表达式时,会输出a的值, 此前定义的变量a为10,所以此处的值为10.10[[email 

shell基础--变量的数值计算

变量的数值计算 1.$((表达式)) (1).实验1 [[email protected]~_~ day4]# cat test.sh #!/bin/bash a=6 b=2 echo "a-b=$(($a-$b))" echo "a+b=$(($a+$b))" echo "a*b=$(($a*$b))" echo "a/b=$(($a/$b))" echo "a%b=$(($a%$b))" echo &q

awk中使用shell变量

其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time="$TIME" 'BEGIN{FS="|"} {if ($7>time) print $2 }' 这样要注意:在awk里,time不能加$符号. 网上说如下方法都可行: 一:"'$var'" 这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如: var="test&quo

8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件

8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 扩展 bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719 # 8.6 管道符和作业控制 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170816/214503952.png?imageslim) - 管道符的命令就是把前面输出的结果交给后面的命令 ``` [[email protected] 

Linux学习日记—使用Shell变量

Shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应的变化. [变量的作用] 为灵活管理Linux系统提供特定参数,而有两层意思: 1.变量名:使用固定的名称,由系统预设或用户自定义 2.变量值:能够根据用户设置,系统环境的变化而变化 [变量的类型] 1.自定义变量:由用户自己定义,修改和使用 2.环境变量:由系统维护,用于设置工作环境 3.位置变量:通过命令行给脚本程序传递参数 4.预定义变量:Bash中内置一类变量,不能直接修改 [自

Linux下如何让 awk 使用 Shell 变量

当我们编写 shell 脚本时,我们通常会在脚本中包含其它小程序或命令,例如 awk 操作.对于 awk 而言,我们需要找一些将某些值从 shell 传递到 awk 操作中的方法.那么如何让 awk 使用 Shell 变量呢?兄弟连Linux培训接下来为大家介绍一下: 有两种可能的方法可以让 awk 使用 shell 变量: 1. 使用 Shell 引用 让我们用一个示例来演示如何在一条 awk 命令中使用 shell 引用来替代一个 shell 变量.在该示例中,我们希望在文件 /etc/pa

shell变量day01

变量 定义变量your_name="runoob.com" #变量名和等号之间不能有空格 使用变量your_name="qinjx"echo $your_nameecho ${your_name}echo "I am good at ${skill}Script"echo "I am good at ${skillScript}"加花括号是为了帮助解释器识别变量的边界 your_name="tom"your

三、Shell变量类型和运算符

一.Shell变量的应用 1.Shell变量的种类 ·用户自定义变量:由用户自己定义.修改和使用     ·预定义变量:Bash预定义的特殊变量,不能直接修改 ·位置变量:通过命令行给程序传递执行参数 2.变量的赋值与引用 ·定义新的变量 变量名要以英文字母或下划线开头,区分大小写 格式:变量名=变量值 · 查看变量的值 格式:echo $变量名 echo  "my name is $name" echo  "my name is ${name}bd" ·从键盘输入

shell变量的替换,命令的替换,转义字符

1,shell变量的替换 变量可以根据变量是否为空或者被删除,而被替换为特定的值 ${var}  变量本来的值 $(var:-word)   如果变量为空,或者已被删除那么返回word,但是不改变var的值 name="xiaoming" echo "xiaoming 's age is ${age:-12}" ech   "age = ${age}" >>>>>>>> xiaoming 's ag

linux中shell变量$#,[email protected],$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&qu