Shell脚本应用(二)

时间:2022-08-16 19:13:10

 Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,返回值为0则成功,非0表示失败或异常

1.test命令

测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式1:test  条件表达式
格式2:[ 条件表达式 ]

2.文件测试

格式:[  操作符  文件或目录  ]

-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试是否设置有可执行权限

检测 media
/cdrom目录是否存在
[root@CentOS6
-node1 ~]# [ -d /media/cdrom ]
[root@CentOS6
-node1 ~]# echo $?
1
[root@CentOS6
-node1 ~]# [ -d /media/cdrom/Server ] && echo "YES" //无输出表示目录不存在
//输出“YES”表示存在

3.整数值比较

格式:[  整数1  操作符  整数

-eq:第一个数等于第二个数

-ne:第一个数不等于第二个数

-gt:第一个数大于第二个数

-lt:第一个数小于第二个数

-le:第一个数小于或等于第二个数

-ge:第一个数大于或等于第二个数

[root@localhost ~]# who | wc -l
7
[root@localhost
~]# [ $(who | wc -l) -gt 5 ] && echo "Too many." //用户是否>5
Too many.
[root@localhost
~]# [ $(who | wc -l) -ge 10 ] && echo "> = 10."
[root@localhost
~]# FreeCC=$(free -m | grep "cache:" | awk '{print $4}')
[root@localhost
~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
864MB
//空闲内存是否<1024MB

4.字符串比较

  =:第一个字符串与第二个字符串相同

  !:第一个字符串与第二个字符串不相同

  -z:检查字符串是否为空

[root@CentOS6-node1 /]# echo $LANG
zh_CN.UTF
-8 //查看当前的语言环境
[root@CentOS6-node1 /]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US
//字符串测试结果(不等于)

5.逻辑测试

  &&:逻辑与,表示‘而且’ // test –a 前面执行成功才能执行后边 

  ||:逻辑或,表示‘或者’  // test –o 前面执行成功则后面不执行,失败则执行后面

  !: 逻辑否,表示‘不’    //

6.单分支if语句

If 条件测试操作
then
命令序列
fi

7.  双分支if语句

If 条件测试操作
then
命令序列1
else
命令序列2
fi

8.多分支if语句

If 条件测试操作1
then
命令序列1
elif条件测试操作2
命令序列2
else
命令序列3
fi