元字符值得是能够被shell解释的特殊字符,每个特殊字符都有其特殊含义,这些字符一方面可用于变量值的运算、我们可以称之为运算符,另外一方面可以和shell命令配合使用来达到更高级的效果
 +  加运算 $((a+b))
 -  减运算 $((a-b))
 *  乘运算 $((a*b))
 /  除运算 $((a/b))
 %  取余   $((a%2))
# 支持浮点运算    bc
格式: "echo $abc | bc"
"echo ‘scale=2;$abc‘ | bc"
# expr 不支持浮点运算,注意数字与数字之间的空格
res=`expr 5 / 3`
如果是乘法,需要 \* 转义
expr 3 \* 10       30
$[]
let
$(()) 不支持浮点运算
echo $((1+1))
echo $((a+b))
支持嵌套括号
echo $(((5-3)*2))
# let 不支持浮点运算,也不支持直接输出,只能赋值。
let res=1+1   echo $res   2
let num=$a+$b  echo $num   3
练习题
1.编写脚本,实现计算器功能
2.编写判断输入的参数是否是整数
3.编写脚本计算1-100相加的值
1. [ ]    括号内左右两侧必须要有空格 
2.test    与[]效果一样,参数也一样
-d 目录
1.[ -d /etc/ ]  echo $?  0
2.test -d /etc/  echo $?  0
s 文件长度 > , 非空
1.[ -s 1.txt ]  echo $?  非空0.空为1
2.test -s 1.txt  echo $?  非空0,空为1
-f 标准文件
1.[ -f 2.txt ]  echo $?  0
2.test -f 2.txt  echo $?  0
-w 可写
1.[ -w 3.txt ]  echo $?  0
2.test -w 3.txt  echo $?  0
-r 可写
1.[ -r 4.txt ]  echo $?  0
2.test -r 4.txt echo $?  0
-x 可执行
1.[ -x 5.txt ]  echo $?  0
2.test -x 5.txt  echo $?  0
-L 符号链接
1.[ -L 6.txt ]  echo $?  0
2.test -L 6.txt  echo $?  0
-u 文件有 suid位设置
1.[ -u 7.txt ]  echo $?  0
2.test -u 7.txt  echo $?  0
== 与 != 两个字符串相等与不相等
[ "aaa" == "aaa" ] echo $?  0
判断字符串是否相等
[ "aaa" != "bbb" ] echo $?  0
判断字符串是否不相等
-z 与 -n 判断字符串空与非空
[ -z "$a" ] 判断字符串是否为空 
[ -n "$a" ] 判断字符串是否非空
-eq 	#等于
-gt		#大于
-ge		#大于或等于
-lt		#小于
-le		#小于或等于
-ne		#不等于
-a		#并且
-o		#或者
需要配合(()),使用(())属于C语言风格的比较,最终都是都是用来当if判断或者whole循环的条件
#	<
#	>
#	<=
#	>=
#	==
#	!=
#	&&
#	||
#	=
x=10    echo $x  10
#	+=      %=
x=10  ((x%3))  echo $x  10 #未赋值给x
x=10  ((x%=3))  echo $x  1 #计算完后赋值给x
#	*=
x=10  ((x*=3)) echo $x 30
#	/=
x=10  ((x/=3)) echo $x  3
# [] 、[[]] 基本一样,不同的是,[[]]支持正则匹配,必须注意,括号两边都要有空格
[[ $x == $y ]]  echo $?  1
支持正则表达,不要加""
[[ $x =~ ^root ]]  echo $?  1
[[ $x =~ ^[0-9]+ ]]
如果是多个的话,可以在后面增加  +  
[ $# -ne 2 ] && echo "只能传入两个整数" && exit
[[ ! $1 =~ ^[0-9]+$ ]] && echo "请传入整数"
[[ ! $2 =~ ^[0-9]+$ ]] && echo "请传入整数"
[[ $1 -gt $2 ]] && echo "$1 > $2"
[[ $1 -lt $2 ]] && echo "$1 < $2"
[[ $1 -eq $2 ]] && echo "$1 = $2"
# 浮点数用bc进行比较,bc结果1代表为真,0代表假
echo "1.3 >= 10.8" | bc 输出结果 0 为假
echo  "5.4 >= 2.3" | bc 输出结果 1 为真原文:https://www.cnblogs.com/haopapa/p/15017497.html