# 算术运算符
# + - * / % 加 减 乘 除 取余
# ** 幂运算
# ++ -- 自增或自减 可放到变量前或后,放在变量前,先自加或自减再取值
# ! && || 逻辑非 逻辑与 逻辑或
# < <= > >= 比较运算符 小于小于等于 大于大于等于
# == != = 相等 不相等 对于字符串=表示相等
# << >> 向左移位 向右移位
# ~ | & ^ 按位取反 按位异或 按位与 按位或
# = += -+ *= /= %= 赋值运算符
# 算术运算命令
# (()) 用于整数运算 echo $((3+4)) 效率更高
# let 用于整数运算 类似于(())
# expr 用于整数运算
# bc linux下计算器程序 需要yum install bc -y echo 3+4|bc 可用于整数和小数运算
# $[] 用于整数运算
# awk awk可用于整数运算 可以用于小数运算
# declare 定义变量值和属性 -i参数可用于定义整数变量做运算
#
# 练习
a=6
b=2
echo "a + b = $(($a+$b))"
echo "a - b = $(($a-$b))"
echo "a × b = $(($a*$b))"
echo "a ÷ b = $(($a/$b))"
echo "a % b = $(($a%$b))"
# 进一步改进支持传参计算任意值
if [ -z "$1" -o -z "$2" ]; then
echo "参数不完整"
exit 1
fi
echo "a + b = $(($1+$2))"
echo "a - b = $(($1-$2))"
echo "a × b = $(($1*$2))"
echo "a ÷ b = $(($1/$2))"
echo "a % b = $(($1%$2))"
# 再次优化
checkNum() {
# -z为空返回true 反之false -n为空表示是整数返回false 反之true
if [ -z "$1" -o -n "`echo $1|sed 's/[0-9]//g'`" ]; then
echo "输入错误,请输入一个整数"
exit 1
fi
}
checkOp() {
echo "test"
}
read -p "请输入第一个整数: " num1
checkNum $num1
read -p "请输入第一个整数: " num2
checkNum $num2
read -p "请输入运算符: " op
checkOp $op
echo "$num1 $op $num2 = $(($num1$op$num2))"
# let 赋值表达式 相当于 ((赋值表达式))
i=2
let i+=8 # 相当于((i+=8)) 效率更高
echo $i
# expr + - \* / %
expr 2 + 3
i=6
i=`expr $i + 6`
# 判断一个变量是否为整数
expr $i + 6 &>/dev/null # &>/dev/null 不保留任何输出
echo $? # 返回0 说明i是整数
# 判断输入是整数还是字符串
if [ -z "$1" ]; then
echo "参数不完整"
exit 1
fi
expr $1 + 6 &>/dev/null
[ $? -eq 0 ] && echo "int" || echo "char"
#优化 持续判断
while true
do
read -p "请输入: " a
if [ -n "$a" ]; then
expr $a + 6 >/dev/null 2>&1
[ $? -eq 0 ] && echo "int" || echo "char"
fi
done
# 进一步改进支持传参计算任意整数
if [ -z "$1" -o -z "$2" ]; then
echo "参数不完整"
exit 1
fi
expr $1 + $2 + 6 >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "请输入2个整数"
exit 2
fi
echo "a + b = $(($1+$2))"
echo "a - b = $(($1-$2))"
echo "a × b = $(($1*$2))"
echo "a ÷ b = $(($1/$2))"
echo "a % b = $(($1%$2))"
# expr其他用法 判断文件后缀名是否符合要求
expr "sdfad.txt2" : ".*\.txt$" >/dev/null 2>&1
# 计算字符串长度
s="teststrings"
expr length "$s"
echo ${#s}
echo $s|wc -L
echo $s|awk '{print length($0)}'
# bc 计算器 支持小数
bc #进入交互界面
3+3
3*3
echo 3+3|bc
i=6
i=`echo $i+6|bc`
# sep 生成数字序列 -s指定数字序列分隔符
sep -s "+" 10
# {1..10} 生成以空格为间隔数字序列 tr将空格替换为+
echo {1..10}|tr " " "+"
# 应用
echo `seq -s "+" 10`=`seq -s "+" 10|bc`
echo `seq -s "+" 10`=$((`seq -s "+" 10`))
echo `seq -s "+" 10`=`seq -s " + " 10|xargs expr`
# awk运算 支持小数
echo "3.6 8.6"|awk '{print ($1+$2)}'
# declare 定义整数变量 与typeset
declare -i A=66 B=6
A+=B
echo $A
# $[] 运算符
i=6
i=$[i+6]
echo $i
# read命令
# 语法 read [参数] [变量名]
# -p 设置提示信息
# -t 设置等待输入时间 单位秒
read -t 5 -p "Please input one number: " num1
read -t 5 -p "Please input tw0 number: " num1 num2