• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

Shell编程 lixian 5年前 (2020-04-22) 963次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、单分支if语句

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

1.格式

if [ 条件判断式 ];then	#如果条件成立,执行下面的程序
	程序
fi			#if语句结束的标志

或者

if [ 条件判断式 ]
	then
	程序
fi

2.注意

if语句使用fi结尾
[ 条件判断式 ]:中括号与条件判断式直接必须有空格

二、双分支if语句

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

1.格式

if [ 条件判断式 ];then
	条件成立时,执行的程序
	else
	条件不成立时,执行的语句
fi

2.判断是否为目录案例

#!/bin/bash
# File Name: if_else.sh
# Author: lixian
#######################
read -p "请输入一个目录:" Dir                                                     
if [ -d "$Dir" ];then
    echo "这是个目录"
else
    echo "这不是目录"
fi
[root@xian /server/scripts]# sh if_else.sh 
请输入一个目录:/lx
这不是目录
[root@xian /server/scripts]# sh if_else.sh 
请输入一个目录:/opt
这是个目录
[root@xian /server/scripts]# sh if_else.sh 
请输入一个目录:/etc
这是个目录

三、多分支if语句

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

1.格式

if    [ 条件 ];then
        指令

elif  [ 条件 ];then
        指令

else
        指令

fi

2.判断一个用户是否存在该系统案例

#!/bin/bash
# File Name: if-2.sh
# Author: lixian
#######################
read -p "请输入你要查询的用户:" User

if id $User &>/dev/null;then
    echo "该用户在本系统内!"
    if ls -d /home/$User &>/dev/null;then
        echo "该用户的家目录在本系统内!"
        exit
    else
        echo "该用户的家目录不在本系统内!"
        exit                                                                       
    fi
elif ls -d /home/$User &>/dev/null;then
    echo "该用户不在该系统内!但家目录在本系统内!"
else
    echo "该用户和家目录都不在本系统内!"
fi
[root@xian /server/scripts]# sh if-2.sh 
请输入你要查询的用户:lx
该用户和家目录都不在本系统内!
[root@xian /server/scripts]# sh if-2.sh 
请输入你要查询的用户:root
该用户在本系统内!
该用户的家目录不在本系统内!
[root@xian /server/scripts]# ls /home/
[root@xian /server/scripts]# useradd lx
[root@xian /server/scripts]# sh if-2.sh 
请输入你要查询的用户:lx
该用户在本系统内!
该用户的家目录在本系统内!
[root@xian /server/scripts]# rm -rf /home/lx/
[root@xian /server/scripts]# sh if-2.sh 
请输入你要查询的用户:lx
该用户在本系统内!
该用户的家目录不在本系统内!

四、流程控制语句之文件比较

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】
Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】
Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

[root@lixian ~]# ls
aa.txt
[root@lixian ~]# [ -e /root/aa.txt ] && echo "yes" || echo "no"
yes          
[root@lixian ~]# [ -e /root/bbw.txt ] && echo "yes" || echo "no"
no
&&:前面语句成功,输出yes,如果判断没有这个文件,也会执行,但不会输出yes
 | | :前面语句不成功,输出no
[root@lixian ~]# [ -w /root/aa.txt ] && echo "yes" || echo "no"
yes
只要文件有写权限,就会判断为真假,不会区分是属主、属组还是其他人
但可以写程序,先截取属组属主其他人再去判断,但那样会比较复杂了

备份数据库案例

脚本代码

#!/bin/bash
# File Name: mysql_backup.sh
# Author: lixian
#######################
#定义变量
Backup_Dir=/backup/mysql
Date=$(date +%F)
#判断目录是否存在
[ -d ${Backup_Dir} ] || mkdir -p ${Backup_Dir}
#提示用户输入备份数据库的用户
read -p "请输入需要备份的数据库用户:" User
#提示用户输入备份数据库用户的密码
read -s -p "请输入备份数据库用户的密码:" PassWord
echo
mysql -u${User} -p${PassWord} -e "show databases;" &>/dev/null
if [ $? -eq 0 ];then
    echo -e "\033[42;37m 已进入$User数据库... \033[0m"
else
    echo -e "\033[41;37m 数据库用户或者密码输入错误,请检查数据库用户及密码! \033[0m"
    exit
fi
#提示用户输入需要备份的数据库
read -p "请输入需要备份的数据库名:" DbName
#判断数据库是否存在
mysql -u${User} -p${PassWord} -e "use $DbName;" &>/dev/null
if [ $? -eq 0 ];then
    echo -e "\033[42;37m 数据库${DbName}存在,正在备份数据库... \033[0m"
else
    echo -e "\033[41;37m 数据库${DbName}不存在,请检查是否有数据库! \033[0m"
    exit
fi
#开始备份数据库
mysqldump -u${User} -p${PassWord} --single-transaction -R  -B ${DbName} > ${Backup_Dir}/${Date}_${DbName}.sql
#判断数据库是否备份成功
if [ $? -eq 0 ];then
    echo -e "\033[42;37m 数据库${DbName}备份成功... \033[0m"
else
    echo -e "\033[41;37m 数据库${DbName}备份失败... \033[0m"
fi

执行结果

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

五、流程控制语句之整数比较

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

比较两个数字的大小脚本案例

脚本代码

[root@xian /server/scripts]# sh big_small.sh 
请输入第一个比较大小的正整数:88
请输入第二个比较大小的正整数:88
88 = 88
[root@xian /server/scripts]# cat big_small.sh 
#!/bin/bash
# File Name: big_small.sh
# Author: lixian
#######################
read -p "请输入第一个比较大小的正整数:" Num1
read -p "请输入第二个比较大小的正整数:" Num2
if [ $Num1 -gt $Num2 ];then
    echo "$Num1 > $Num2"
elif [ $Num1 -lt $Num2 ];then
    echo "$Num1 < $Num2" 
else
    echo "$Num1 = $Num2"
fi

执行结果

[root@xian /server/scripts]# sh big_small.sh 
请输入第一个比较大小的正整数:1000
请输入第二个比较大小的正整数:999
1000 > 999
[root@xian /server/scripts]# sh big_small.sh 
请输入第一个比较大小的正整数:80
请输入第二个比较大小的正整数:90
80 < 90
[root@xian /server/scripts]# sh big_small.sh 
请输入第一个比较大小的正整数:88
请输入第二个比较大小的正整数:88
88 = 88

六、条件判断式语句之字符串的判断

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】

七、条件判断式语句之多重条件判断

Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Shell脚本编程学习——Shell流程控制语句之if语句【显哥出品,必为精品】
喜欢 (1)

您必须 登录 才能发表评论!