一条件选择语句——if语句
对于if条件语句,简单地说,其语义类似于如果…那么。
if条件语句是Linux运维人员在实际生产工作中使用得最频繁也是最重要的语句。
(一)if条件语句的语法
1.单分支结构
if <条件表达式>then
指令
fi
if <条件表达式>; then指令
fi
上文的“<条件表达式>”部分可以是test、[ ]、[[ ]]、(())等条件表达式,甚至可以直接使用命令作为条件表达式。
每个if条件语句都以if开头,并带有then,最后以fi结尾。
2双分支结构
if条件语句的双分支结构主体为“如果…,那么.,否则…。
条件语句的双分支结构语法为:
if <条件表达式>then
指令集1,条件为真的分支代码
else
指令集2,条件为假的分支代码
fi
3多分支结构
if条件语句多分支结构的主体为“如果…,那么…,否则如果…,那么,否则如果.,那么., 否则…。
if条件语句多分支语法为:
if 判断条件 1 ; then
条件为真的分支代码
elif 判断条件 2 ; then
条件为真的分支代码
elif 判断条件 3 ; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
多分支的if语句和默认路由是一样的,网络都不匹配的情况下走默认路由。
[root@centos7 ~]# type if
if is a shell keyword
[root@centos7 ~]# help if
if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi 中括号表示可有可无的
Execute commands based on conditional.
The `if COMMANDS' list is executed. If its exit status is zero, then the
`then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is
executed in turn, and if its exit status is zero, the corresponding
`then COMMANDS' list is executed and the if command completes. Otherwise,
the `else COMMANDS' list is executed, if present. The exit status of the
entire construct is the exit status of the last command executed, or zero
if no condition tested true.
Exit Status:
Returns the status of the last command executed.
示例
1、编写脚本createuser.sh
实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
完整脚本
[root@centos73 shell_scripts]# cat createuser.sh
#!/bin/bash
#Author=wang
if [ $# -ne 1 ] ; then
echo "you must enter a parameter"
exit 1
fi
#先判断是否有参数,有和没有是一回事,这个容易被忽视
username=$1
#变量就是第1个参数
id $username &>/dev/null
if [ $? -eq 0 ] ; then
echo "$username has existed !"
else
useradd $username &>/dev/null
fi
id $username
执行结果
[root@centos73 shell_scripts]# bash createuser.sh wu
wu has existed !
uid=1023(wu) gid=1023(wu) groups=1023(wu)
[root@centos73 shell_scripts]# bash createuser.sh wang
wang has existed !
uid=1022(wang) gid=1022(wang) groups=1022(wang)
[root@centos73 shell_scripts]# bash createuser.sh xixixi
uid=1025(xixixi) gid=1025(xixixi) groups=1025(xixixi)
升级版,显示颜色
[root@centos73 shell_scripts]# cat createuser_1.sh
#!/bin/bash
#Author=wang
RED="