Shell编程之条件语句

字符串与逻辑测试

IF语句

if单分支语句

if双分支语句

if多分支语句

if嵌套

条件测试操作 test命令

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

格式1: test 条件表达式 格式2: [ 条件表达式 ] //至少应有一个空格 文件测试 [ 操作符 文件或目录 ] 常用的测试操作符

-d:测试是否为目录

-e:测试目录或文件是否存在

-f:测试是否为文件

-r:测试当前用户是否有权限读取

-w:测试当前用户是否有权限写入

-x:测试当前用户是否有权限执行

[root@localhost ~]# [ -d /media/cdrom ] [root@localhost ~]# echo $? 0 //返回0表示条件成立 [root@localhost ~]# [ -d /media/cdrom/Server ] [root@localhost ~]# echo $? 1 //返回1表示条件不成立 [root@localhost ~]# [ -d /media/cdrom ] && echo "YES" //&&逻辑与,“而且”的意思 YES 整数值比较 [ 整数1 操作符 整数2] 常用的测试操作符

-eq:等于

-ne:不等于

-gt:大于

-lt:小于

-le:小于或等于

-ge:大于或等于

[root@localhost ~]# who |wc -l 7 [root@localhost ~]# [ $(who |wc -1) -gt 5] && echo "Too many." //用户数是否>5 Too many. [root@localhost ~]# [ $(who |wc -1) -ge 10 ] && echo">= 10." //用户数是否>=10 [root@localhost ~]# FreeCC=$(free -m | grep "Mem:”| awk '{print $6}`) [root@localhost ~]# [ $FreeCC -It 1024 ] && echo ${FreeCC}MB //空闲内存是否< 1024MB 275MB 字符串比较

格式1

[ 字符串1 = 字符串2 ] [ 字符串1 != 字符串2 ]

格式2

[ -z 字符串 ]

常用的测试操作符

=:字符串内容相同

!=:字符串内容不同,!号表示相反的意思

-z:字符串内容为空

[root@localhost ~]# echo $LANG //测试当前语言环境 zh_ CN.UTF-8 [root@localhost ~]# [ $LANG != "en.US" ] && echo "Not en.US" Not en.US [root@localhost ~]# read -p“是否覆盖现有文件(yes/no) ?”ACK //测试读入的字符串是否为yes 是否覆盖现有文件(yes/no) ? yes [root@localhost ~]# [ $ACK = "yes" ] && echo "覆盖" 覆盖 逻辑测试 格式1:[ 表达式1 ] 操作符号 [ 表达式2 ]... 格式2:命令1 操作符 命令2... 常用的测试操作符

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

[root@localhost ~]#[ -dletc ] && [-r /etc] && echo “You can open it“ [root@localhost~]#[ -d/etc ] II [-d /home] && echo “ok" if语句的分支结构 单分支结构 if 条件测试操作 then 命令序列 fi 单分支if语句

判断挂载点目录,若不存在则自动创建 [root@localhost ~]# vim test01.sh #!/bin/bash dir="/mnt/aaa/" if [ !-d $dir ] //当目录不存在时执行 then mkdir -p $dir if 双分支结构

if 条件测试操作 then 命令序列1 else 命令序列2 fi 双分支if语句

判断目标主机是否存活,显示检测结果

root@localhost ~]# vim test02.sh #!/bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then //判断ping命令的检测结果,分别给出不同的提示 echo "Host $1 is up." else echo "Host $1 is down." fi 多分支结构 if 条件测试操作1 then 命令序列1 elif 条件测试操作2 then 命令序列2 else 命令序列3 fi 多分支if语句

判断分数范围,分出优秀、合格、不合格三档 [root@localhost ~]# vim test03.sh #!/bin/bash read -p "请输入您的分数(0-100):" a if [ $a -ge 85 ]&&[ $a -le 10 ] then echo"$a分,优秀!" //判断分数所在区间,给出不同的分档结果 elif[ $a -ge 70 ]&&[ $a -le 84 ] then echo"$a分,合格!" else echo"$a分,不合格!" fi

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b56db11fec472d08d0008e1bce77e38e.html