0

shell 算数运算符

 1 year ago
source link: https://blog.51cto.com/u_13236892/5765204
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

shell 算数运算符

精选 原创
shell中无法直接进行算数运算,直接进行会变成字符串之间的合并
常用算数运算方式
(1) 使用let命令进行算术运算,只支持整数运算。
(2) 使用expr命令进行算术运算,只支持整数运算。
(3) 使用bc命令进行算术运算,支持小数运算。
(4) 使用运算语法:$[算术表达式],只支持整数运算。
(5) 使用运算语法:$((算术表达式)),只支持整数运算。
(6) 在初始化变量时,将变量定义为”整数”类型,则可直接进行整数运算。

2、let命令进行整数运算

let命令是shell的内建命令,我们可以借助let命令进行整数运算,这种方法只支持整数运算,不支持包含小数的运算
例:
let a=1+1;echo $a
b=1;c=2;let d=${b}+${c};echo $d

这种方法需要借助一个变量,将计算后的值赋值给这个变量后进行输出,但是let命令是shell内建命令,这是它的优势,只要当前服务器上
存在shell,即可使用它进行整数运算。

3、expr命令进行算术运算

expr命令也支持算术运算功能,虽然它的功能不止于此,但是此处我们只使用它进行算术运算,expr命令与let命令相似,也只能进行整数运
算,而且,使用expr命令进行算术运算时,需要注意以下两点
1、数值与运算符号之间需要用空格隔开,否则无法进行算术运算,不加空格会变成字符串合并。
2、使用expr命令进行乘法运算时,需要将”乘号”转义,否则会报错。
例:
expr 1+2 ==>1+2
expr 1 + 2 ==>3
expr 2 \* 5 ==>10
a=1;b=2;expr ${a} + ${b}

4、bc命令进行算术运算

bc命令大家可能已经很熟悉了,它是linux下最常用的”计算器”,我们可以借助bc命令进行算术运算,使用这种方法的优势就是支持小数运算。
注意:在使用”除法”时,需要指定小数点精度,否则运算结果中不会包含小数,使用scale指定小数点精度
例:
echo "1.111+2.222"|bc ==>3.333
echo "8/3"|bc ==>2
echo "scale=2;8/3"|bc ==>2.66

当使用bc命令时,如果运算结果为不到1的小数,则不会显示小数点前面的”零”,
echo "0.5+0.2"|bc ==>.7 ##少了最前面的0

除了使用管道,将echo输出的内容重定向到bc,还可以使用如下方法利用bc,它们是等效的。
a=1;b=2;bc<<< ${a}+${b} ###
${a}+${b} >>>bc 就会报错

5、使用运算语法 $[算术表达式]

变量不能是小数,可以直接进行/除号,不输出小数部分
echo $[1+2]
a=1;b=2;echo $[${a}+${b}]
a=5;b=2;echo $[${a}/${b}]

6、使用运算语法 $((算术表达式))

和$[算术表达式]基本上一致
变量不能是小数,可以直接进行/除号,不输出小数部分
echo $((5/2))

7、将变量声明为整形

这种方法也比较简单,可以直接将变量声明为”整数”,然后即可直接进行整数运算,计算过程必须都是整数,结果s有小数也会忽略
示例如下:
declare -i s
s=(1+4)/2
echo $s ==>2
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK