一、算术运算
1、+ 加
expr
求值操作
# 定义两个变量
a=6
b=4
# 加法 expr求值
value=`expr $a + $b`
echo "$a+$b=$value"
输出:6+4=10
注:不是单引号 而是斜撇 键位在数字1的左边
若为单引号会输出1+2=expr 1 + 2 会把expr当作字符串输出
2、- 减
$[ ]
# 定义两个变量
a=6
b=4
# 减法 另一种数值运算
value=$[a-b]
echo "$a-$b=$value"
输出:6-4=2
3、* 乘
$[ ]
# 定义两个变量
a=6
b=4
# 乘法
value=$[a*b]
echo "$a*$b=$value"
输出:6*4=24
4、/ 除
$[ ]
# 定义两个变量
a=6
b=4
# 除法
value=$[a/b]
echo "$a/$b=$value"
输出:6/4=1
5、% 取余
$[ ]
# 定义两个变量
a=6
b=4
# 取余
value=$[a%b]
echo "$a%$b=$value"
输出:6%4=2
二、关系运算
-eq:相等(equal)
if [ $a -eq $b ]
then
echo "$a -eq $b : a等于b"
else
echo "$a -eq $b : a不等于b"
fi
-ne:不相等(not equal)
-gt:大于(greater than)
-ge:大于等于(greater equal)
-lt:小于(less than)
-le:小于等于(less equal)
三、布尔运算
!:非运算
! false 即为true
-o:或运算(or)
-a:与运算(and)
[ $a -lt 100 -a $b -gt 15 ] 即为 a小于100并且b大于15
&&:逻辑与
注:两个方括号[[ ]]
[[ $a -gt 100 && $b -gt 100 ]] 即为 a大于100并且b大于15且第一个表达式为false则不判断第二个表达式 具有短路的功能
||:逻辑或
==:相等(数字判断)
!=:不等(数字判断)
四、文件测试运算
当前文件:
file=$0
echo "当前文件是:$file"
-d:是否为目录(document)
if [ -d $file ]
then
echo "该文件为文档"
else
echo "该文件不为文档"
fi
-f:是否为普通文件(file)
if [ -f $file ]
then
echo "该文件为普通文件"
fi
-r 是否可读(read)
if [ -r $file ]
then
echo "该文件可读"
fi
-w:是否可写(write)
-x:是否可执行(execute)
-s:文件是否为空
-e:文件是否存在
if [ -e $file ]
then
echo "该文件存在"
fi
五、字符串运算
1、字符串引号的区别
单引号:原样输出内容 变量无效
双引号:可以包含变量
2、字符串表达式
${#字符串变量名}
:计算字符串长度
str="piconjo"
echo "长度:${#str}"
输出结果:长度:7
${字符串变量名:起始位置:截取的字符个数}
:截取字符串
例一:
${str:1:3}
获取字符串变量str中的第一个字符开始到第三个字符
例二:
str="piconjo"
echo "截取出on:${str:3:2}"
输出结果:截取出on:on
'expr index "$字符串变量名" 要查找的字符'
:查找字符串中的子串的位置
注:不是单引号 是斜撇
str="piconjo"
result=`expr index "$str" on`
echo "查找on的位置:$result"
输出结果:查找on的位置:4
代码:
输出:
3、字符串运算符
=
:字符串是否相等
用法:[ $a = $b ]
!=
:字符串是否不相等
用法:[ $a != $b ]
-z
:字符串长度是否0(zero)
用法:[ -z $a ]
if [ -z $str ]
then
echo "字符串长度为零"
fi
-n
:字符串长度是否不为0(not zero)
用法:[ -n “$a” ]
if [ -n $str ]
then
echo "字符串长度不为零"
fi
$
:字符串是否为空
用法:[ $a ]