目录

一、shell的数学运算

二、shell脚本的退出

 

 

正文

一、shell的数学运算

1. shell的求表达式变量的值:expr

语法:expr 表达式

expr 只能计算整数

运算:

  • 加 +
  • 减 -
  • 乘 \*
  • 除 \
  • 取余 %
MBC02FV3MZMD6P:J_shell j$ expr 1 + 1
2
MBC02FV3MZMD6P:J_shell j$ expr 2 - 1
1
MBC02FV3MZMD6P:J_shell j$ expr 2 \* 5
10
MBC02FV3MZMD6P:J_shell j$ expr 5 / 5
1
MBC02FV3MZMD6P:J_shell j$ expr 5 / 2
2
MBC02FV3MZMD6P:J_shell j$ expr 5 % 2
1
MBC02FV3MZMD6P:J_shell j$ 

乘法运算要加转义字符\, 因为* 是通配符

 

2. expr可应用于:判断变量是否是整数

知识点【1】echo $? 

如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。

如下例子, expr 后面的表达式中,数字必须是整数。比如expr 1+ variable,用$? 查看上一条命令是否执行成功

MBC02FV3MZMD6P:J_shell j$ expr 1 + 1.1
expr: not a decimal number: '1.1'
MBC02FV3MZMD6P:J_shell j$ echo $?
2
MBC02FV3MZMD6P:J_shell j$ expr 1 + 1
2
MBC02FV3MZMD6P:J_shell j$ echo $?
0
MBC02FV3MZMD6P:J_shell j$ 

 

知识点【2】&>/dev/null  输入到系统回收站

如下:想要查看上一句命令的执行结果,但是结果不输出,直接输入到系统的回收站内,用echo $?查看执行是否成功

MBC02FV3MZMD6P:J_shell j$ expr 1 + 1.1 &>/dev/null; echo $?
2
MBC02FV3MZMD6P:J_shell j$ expr 1 + 1 &>/dev/null; echo $?
0
MBC02FV3MZMD6P:J_shell j$ 

 

知识点【3】let进行整数运算

let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来

语法: let 表达式

MBC02FV3MZMD6P:J_shell j$ let a=4+5
MBC02FV3MZMD6P:J_shell j$ let b=2+3
MBC02FV3MZMD6P:J_shell j$ echo $a,$b
9,5
MBC02FV3MZMD6P:J_shell j$ let a=20
MBC02FV3MZMD6P:J_shell j$ let b=10
MBC02FV3MZMD6P:J_shell j$ let a-=5
MBC02FV3MZMD6P:J_shell j$ echo $a
15
MBC02FV3MZMD6P:J_shell j$ let b+=50
MBC02FV3MZMD6P:J_shell j$ echo $b
60
MBC02FV3MZMD6P:J_shell j$ 

 

知识点【4】:bc计算器 可进行浮点型数据运算

  • 安装bc计算器
  • 打开bc计算器

上例子:整型、浮点型都可以计算,默认是不保留小数点

保留小数,用scale;scale=2,表示保留2位小数

MBC02FV3MZMD6P:J_shell j$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1.1
2.1
2+3
5
5+7.8
12.8
10*3/5
6
20/3
6
scale=2
20/3
6.66

如下计算百分比的例子:

MBC02FV3MZMD6P:~ j$ echo "percent is:`echo "scale=2;141*100/8556"|bc`%"
percent is:1.64%

 

知识点【5】:双小括号+$进行运算

语法: $((表达式))

MBC02FV3MZMD6P:~ j$ echo $((3*7+8))
29
MBC02FV3MZMD6P:~ j$ echo $((3**3))
27
MBC02FV3MZMD6P:~ j$ echo $((100/3))
33
MBC02FV3MZMD6P:~ j$ echo $((100%3))
1
MBC02FV3MZMD6P:~ j$ 

 

 

二、shell脚本的退出

exit 是一个 Shell 内置命令,用来退出当前 Shell 进程,并返回一个退出状态;使用$?可以接收这个退出状态;exit 命令可以接受一个整数值作为参数,代表退出状态。

exit 退出状态只能是一个介于 0~255 之间的整数;如果不指定,默认状态值是 0。

默认值是0

#!/bin/bash
  
echo "hello world"
exit 0

执行脚本后查看返回状态:

MBC02FV3MZMD6P:J_shell j$ vim exit_code.sh
MBC02FV3MZMD6P:J_shell j$ sh exit_code.sh 
hello world
MBC02FV3MZMD6P:J_shell j$ echo $?
0

把exit 的输出改成5,再次执行;

MBC02FV3MZMD6P:J_shell j$ vim exit_code.sh
MBC02FV3MZMD6P:J_shell j$ sh exit_code.sh 
hello world
MBC02FV3MZMD6P:J_shell j$ echo $?
5