(一)shell算数运算
1.expr:是一个表达式处理命令,可以执行简单的整数运算,有‘+,-,*,、,%’
#a=5;b=6
#a='expr $a + 1'
#echo $a
6
2.let:不需要在前面加“$”,但必须将单个或带有空格的表达式用双引号引起来。
#x=100
#let x=x+1
#echo x
101
3.浮点算数运算
使用bc,awk命令
下例为使用bc命令计算193/2的结果
#n='echo "scale = 3;193/2"|bc'
#echo $n
96.500
(二)条件测试
编写脚本时有时候需要判断字符串是否相等,可能还要检查文件状态或是数字测试,基于这些测试才能做进一步操作。test命令用于测试字符串,文件状态和数字。
1.测试文件属性
-b file 文件file存在且为块设备,则值为真
-c file 文件file存在且为字符设备,则值为真
-r file 文件file存在且为只读,则值为真
-w file 文件file存在且为可写,则值为真
-x file 文件file存在且为可执行,则值为真
-s file 文件file存在且为长度大于0,则值为真
-d file 文件file存在且为一个目录,则值为真
-f file 文件file存在且为普通文件,则值为真
-e file 文件file存在,则值为真
例如:
#!/bin/bash
#filename:testfile
echo "请输入文件名称:"
read name
if test -c $name;then
cp $name /temp
else
echo "$name is not a char device"
fi
2.数值测试
n1-eq n2 :n1等于n2,值为真
n1-ne n2:n1不等于n2,值为真
n1-gt n2:n1大于n2,值为真
n1-lt n2:n1小于n2,值为真
n1-ge n2:n1大于等于n2,值为真
n1-le n2:n1小于等于n2,值为真
例如:
#!/bin/bash
#filename:noequal
echo "请输入第一个数:"
read a
echo "请输入第二个数:"
read b
if test $a -ne $b;then
echo "不等于"
else
echo "等于"
fi
3.测试字符串
-z s1:如果字符串s1的长度为0,则值为真
-n s1:如果字符串s1的长度不为0,则值为真
s1=s2:如果字符串s1和字符串s2相等,则值为真
s1!=s2:如果字符串s1和字符串s2不相等,则值为真
s1:如果字符串s1不是空串,则值为真
例如:
#!/bin/bash
#filename:noequal
echo "请输入第一个字符串:"
read s1
echo "请输入第二个字符串:"
read s2
if test $s1 = $s2;then
echo "相等"
else
echo"不相等"
fi
4.测试逻辑运算符
-a:二进制“与”操作
-o:二进制“或”操作
!:二进制“非”操作
#!/bin/bash
#filename:myand
echo "请输入一个值Z"
read z
if test $z -ge 10 -a $z -le 40;then
echo "大于10小于40"
else
echo "不大于10或不小于40"
fi