Linux中的shell(二)

(一)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

猜你喜欢

转载自blog.csdn.net/weixin_38635069/article/details/80550941
今日推荐