流程控制语句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
数值比较
数值比较例子
[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
字符串比较
字符串比较例子
[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
文件比较 (标记蓝色为常用的)
文件比较例子
[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