bash中的算术运算
[ + - * / : 加减乘除 ]
[ % 求余 ]
[ ** 乘方 ]
[ ++ – 自增自减 ]
[ += -= 增强型赋值 ]
算术运算有特定的写法来完成:
1、 使用let
n=1+2; echo $n 这样写,默认将1+2当成字符,并不会当成数字运算
let 1+2 使用let 1+2将被当成数字进行运算,但是结果不显示
let n=1+2;echo $n ---> 需要用一个变量保存起来,然后打印变量的值
2、 使用 $ [ ] dollar符加中括号,算术运算写在中括号内
n=$[3*2] ; echo n
3、 使用 $(()) dollar符跟两个小括号,将执行的算术运算写在这两个括号内
n=((3*5));echo $n
不要和 $(CMD) 搞混了, 这种写法是引用命令
4、 使用命令 expr
expr 3 * 4
-- expr是一个命令,后面跟着的都是参数 注意参数之间要以空格分隔的,不能写成 expr 3*4
expr 3 \* 4
-- 对于乘号还要转义
5、. 声明为整数
declare -i n=3+6
echo "算术运算表达式" |bc
逻辑运算:
true ,false —> 逻辑运算中的真的假 是对应于二进制 的1和 0
与运算 & : 和1做与运算,原来是什么就保留什么,和0做与运算,结果都为0
echo $[12&24] ---> 结果为8
或运算:| 两个数只要有一个是1,结果就是1,全部为0时,结果才为0
let $[12|24] ---> 结果为28
取反运算 ! : 逻辑运算符只有两种,要么真true,要么假false,如果是10进制的数字,只要不是0都认为是真
echo $[!100] --> 100系统认为是真,取反就变成了假, 结果输出为0
echo $[!1000] --> 1000也认为是真,取反也变成了假,结果输出为0
echo $[!0] --> 0认为是假,取反成了真,结果输出为1
true;echo $? --> 执行状态返回1
fasle;echo $? --> 执行状态返回0
异或运算: ^ 不同为1 , 相同为0
用异或实现两个变量的值互换: 比如有 A B 两个变量 A=10 B=20
第一步: A=${A^B} 把A与B异或后的结果赋值给A
第二步: B=${A^B} 把异或后的值与原来的B值异或, B就成了A
第三步: A=${A^B} 异或值与原来的A异或,又变成了B 这样A就变成了B