深入学习Linux之流程控制if语句

流程控制语句if

语法格式:


(1)if  [ 条件 ]  
	then

		commands

fi
(2) 双分支if语句

语法格式:

if [ 条件 ]; then

  		commands
else

        commands

fi
(3)多分支if语句
语法结构:

if [ 条件1 ]; then

        commands

elif  [ 条件2 ] ; then

        commands

elif [ 条件3 ]; then

        commands

else

        commands

fi
例:1

#!/bin/bash
if ls /opt/kkk ; then
	echo "this is OK"
else
	mkdir /opt/kkk
fi
例2:查询一个用户是否存在,是否有家目录;如果没有新建该用户

#!/bin/bash
#键盘输入用户名
read -p "请输入用户名:" name
if grep $name /etc/passwd ; then
	echo " 用户存在"
elif ls -d /home/$name ; then
	echo "家目录存在"
else
	useradd $name
fi

test 测试命令(可用 [ ] 符号代替)

shell 中的test 是用来检查某个条件是否成立,这可以是数字、字符、文件三个方面的测试

格式:test 测试条件

说明:$? 正确为0 ,错误为非0

数值比较
深入学习Linux之流程控制if语句_第1张图片

数值比较例子
[root@localhost ~]# vim  k1.sh

#!/bin/bash
if test 5 -eq 4 ;then
   echo "ok"
else
   echo "no"
fi                              

[root@localhost ~]# vim k2.sh
#!/bin/bash
if [ 5 -gt 4 ] ;then
   echo "OK"
else
   echo "no"
fi

[root@localhost ~]# sh k2.sh
测试例子比较两个数的大小
[root@localhost ~]# vim k3.sh#!/bin/bashread -p 
"请输入两个数据" a b
if [ $a -gt $b ];then    
	echo "$a>$b"
elif [ $a -lt $b ];then    
	echo "$a<$b"else    
	echo "$a=$b"
fi
 [root@localhost ~]# sh k3.sh
 请输入两个数据5 5
 5=5
 [root@localhost ~]# sh k3.sh请输入两个数据
 6 5
 6>5
 [root@localhost ~]# sh k3.sh
 请输入两个数据5 6 
 5<6

字符串比较
深入学习Linux之流程控制if语句_第2张图片

字符串比较例子
[root@localhost ~]# vim k5.sh

#!/bin/bash
read -p "请输入用户名:" name
if [ $name == "root" ];then
   echo "you are administrator"
else
   echo "you are general user"
fi

文件比较 (标记蓝色为常用的)
深入学习Linux之流程控制if语句_第3张图片
深入学习Linux之流程控制if语句_第4张图片

文件比较例子
[root@localhost ~]# vim k7.sh

#!/bin/bash
if [ -d /boot ] ;then
   echo "ok"
else
   echo "err"
fi
                           
[root@localhost ~]# sh  k7.sh
ok

[root@localhost ~]# test -e /root/k7.sh && echo "ok" || echo "err"
ok
[root@localhost ~]# vim +11 k8.sh

#!/bin/bash
#clear /var/log/messages

#判断当前用户

if [ $USER != "root" ];then
   echo "you must root"
   exit 10
fi
#判断文件是否存在
if [ ! -f /var/log/messages ];then
   echo "文件不存在"
   exit 12
fi
tail -100 /var/log/messages >/var/log/test

>/var/log/messages
mv /var/log/test /var/log/messages

[root@localhost ~]# sh k8.sh
[root@localhost ~]# echo $?
0

深入学习Linux之流程控制if语句_第5张图片

你可能感兴趣的:(Linux)