1.计算10的阶乘
vim jiecheng.sh
#!/bin/bash
res=1
for i in $@
do
res=$((res*i))
done
echo $res
运行脚本计算10的阶乘
source jiecheng.sh {1..10}
2.12,-13的原码,补码和反码
二进制的最高位为符号位。0为正数,1为负数
正数的原码,补码,反码是一致的。它的补码和反码就是原码
负数的原码,反码,补码不一致。
原码-->反码:除了最高位的符号位,其他按位取反
补码:在反码的基础上+1
12:二进制 --- 0000 1100
原码 --- 0000 1100
反码 --- 0000 1100
补码 --- 0000 1100
-13:二进制 --- 0000 1101
原码 --- 1000 1101
反码 --- 1111 0010
补码 --- 1111 0011
3.计算 1+2的结果,并将值赋给变量data, 然后计算 data+10的值,赋值给data2(要求:分别使用(()), let, expr,bc和 $[]实现)
(()):用于整数运算,在(())里面可以省略变量的$符号
let:用于整数运算,可以执行多个表达式,变量的$符号不可省略
expr:不止可以用于整数运算,使用expr时,运算符及用于计算的数字左右都至少有一个空格,否则报错;使用乘号,必须使用反斜线屏蔽其特定含义;使用expr做 计算,将一个未知的变量和一个已知的整数相加,看返回码是否为 0,如果为0就认为做加法的变量为整数,否则就不是整数。
bc:可以计算小数,相当于Linux中的计算器
$[]:用于整数运算
((data=1+2));echo $data ---- 将1+2的结果赋值给data
3
((data2=data+10));echo $data2 ---使用(())
13
let data2=$data+10;echo $data2 --- 使用let
13
data2=`expr $data + 10` ;echo $data2 --- 使用expr
13
echo "`echo $data`+10" | bc --- 使用bc
13
data2=$[data+10];echo $data2 --- 使用$[]
13