无题
#表达式与运算符
##1.1 基本算术运算
代码内容:
#!/bin/bash |
运行情况:
##1.2 逻辑运算
代码内容:
#!/bin/bash |
运行情况:
由图可以看出,该代码出错。报错信息为:expr语法错误。故可以看出,当直接用expr进行大小比较时,会出错。<,>会被shell误解,因此,可采用添加转义字符\的方式进行处理。echo使用的不是三元运算符,这只是一个简单的比大小。
更改后的代码如下:
#!/bin/bash |
效果如下:
##1.3 字符串运算
1.3.1 计算字符串子串
使用方法为:
expr “目标字符串” 子串起始位置 子串长度
效果如下:
1.3.2 计算字符串子串首次出现的位置
使用方法为:
expr index “目标字符串” “目标子串”
效果如下:
1.3.3 计算字符串长度
使用方法如下:
expr length “目标字符串”
效果如下:
##2.1 求值
a=1
b=01
c=2
###2.1.1
test $a = $b
echo $?
结果为1
因为比较的是字符串,1和01字符串不一致
###2.1.2
test $a -eq $b
echo $?
结果是0
因为-eq比较的是数值,因此,1和01相同
###2.1.3
test $a -lt $c
echo $?
结果是0
因为-lt比较的是数值,a是1,c是2,1<2。
###2.1.4
test -n $a
echo $?
结果为0
因为-n检测变量是否为非空,这里a有值,因此结果为0。
###2.1.5
test -z $a
echo $?
结果为1
因为-z检测变量是否为空,这里a有值,因此结果为1。
###2.1.6
test -n $f
echo $?
结果为1
因为-n检测变量是否为非空,这里f未定义,因此结果为1。
###2.1.7
test -z $f
echo $?
结果为0
因为-n检测变量是否为空,这里f未定义,因此结果为0。
##2.2 请写出如下判断所需要的命令,并执行的结果,写入报告。
###2.2.1 判断文件 /usr/sbin/anacron 是否存在,且具有执行权限。
if [ -x /usr/sbin/anacron ]; then
echo 1
else
echo 0
fi
结果为0,即不存在或没有权限。
###2.2.2 判断 /dev/sda 磁盘是否是块设备,是块设备则为真。
if [ -b /dev/sda ]; then
echo 1
else
echo 0
fi
结果为0,即/dev/sda 磁不是块设备。
###2.2.3 判断变量 a 的值是否在 18 到 28 之间(含18和28)。
a=20
if [ $a -ge 18 ] && [ $a -le 28 ]; then
echo 1
else
echo 0
fi
###2.2.4 判断文件是否是空文件,是空文件则为真。
if [ ! -s wenjianming ]; then
echo 1
else
echo 0
fi