【Linux】shell脚本实战-if单双分支条件语句详解

举报
互联网老辛 发表于 2021/06/09 00:41:44 2021/06/09
【摘要】 文章目录 if单分支1. 单分支语法分析2. 单分支语法规范if双分支语法分析3. if单分支和双分支脚本举例a. 检查是否为超级用户(双分支)b. 找一个金钱大于1000000的结婚(单分支)c. 判断文件是否为普通文件(双分支) d. 判断一个文件是否存在(双分支) 总结 if单分支 在所有的编程语言里面,if条件语句几乎是最简单的语句格...

if单分支

在所有的编程语言里面,if条件语句几乎是最简单的语句格式,且用途最广。

当if后面的<条件表达式>成立(真)的时候,就会执行then后面的指令或语句,否则,就会忽略then后面的指令或语句,转而执行fi下面的程序。

if语句流程图:
在这里插入图片描述

1. 单分支语法分析
第一种语法:

if <条件表达式>
then 指令
fi

第二种语法:

if <条件表达式>;then 指令
fi
  
 

上文中的“<条件表达式>”位置部分,可以使用test、[]、[[]]、(())等条件表达式

2. 单分支语法规范

if语句语法规范**

  • if与[之间要有空格
  • [ ]与判断条件之间也必须有空格
  • ]与;之间不能有空格
  • 以fi结尾,表示if语句的结束
if双分支语法分析
语法:
if <条件表达式>
  then 指令
  else 指令
fi

例如:
if [ 你有钱 ]
  then 我就嫁给你
  else 我考虑下
fi

  
 
3. if单分支和双分支脚本举例
a. 检查是否为超级用户(双分支)
[root@ecs-c13b ~]# cat iftest01.sh 
#!/bin/bash
if [ $UID -ne 0 ];then
  echo not  root user ,please run as root.
else
  echo Root user

fi
  
 

返回结果:

[root@ecs-c13b ~]# bash iftest01.sh 
Root user

[root@ecs-c13b ~]# whoami
root
  
 
b. 找一个金钱大于1000000的结婚(单分支)
#!/bin/bash
read -p 'please input your money:' num
if [ $num -ge 10000000 ]
then echo 'let us get married!!'
fi
  
 

返回结果

[root@ecs-c13b ~]# bash iftest02.sh 
please input your money:10000000
let us get married!!

  
 
c. 判断文件是否为普通文件(双分支)
#!/bin/bash
read -p 'please input a file name, for example /root/test.txt:' filename
if [ -f $filename ];then echo '这是一个普通文件'
else echo '请重新输入一个文件'
fi

  
 

返回结果:

[root@ecs-c13b ~]# bash iftest03.sh 
please input a file name, for example /root/test.txt:iftest02.sh
这是一个普通文件

  
 
d. 判断一个文件是否存在(双分支)
#!/bin/bash
fpath=/etc/passwd
if [ -e $fpath ];then echo File exits;
else echo File not exits;
fi
~ 
  
 

返回结果:

[root@ecs-c13b ~]# bash iftest04.sh 
File exits

  
 

总结

单分支语句和双分支语句是最简单的一种语句,涉及到一层的判断,但这种属于整个判断语句的基础,如果基础判断语句整不明白,后面学再多也是白学,建议大家多加练习。 其实难点在于条件测试中的各类运算, 比如-f -d -z 等等,还有大于小于整明白了,这块的内容就不算难。

所以说上一节 的内容是重点,都是需要记忆的东西,能全记下来更好,如果不能全部记下,只记住重点就好。

你对Linux的精通程度,决定了你的shell脚本能不能写好,与逻辑思维,编程思维,没有太大的关系。

小伙伴们: 要下苦功夫了!

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/107825762

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。