目录
一、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