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

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

文章目录

        • if单分支
          • 1. 单分支语法分析
          • 2. 单分支语法规范
          • if双分支语法分析
          • 3. if单分支和双分支脚本举例
          • a. 检查是否为超级用户(双分支)
          • b. 找一个金钱大于1000000的结婚(单分支)
            • c. 判断文件是否为普通文件(双分支)
          • d. 判断一个文件是否存在(双分支)
        • 总结

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/bashif [ $UID -ne 0 ];then  echo not  root user ,please run as root.else  echo Root userfi

返回结果:

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

返回结果

[root@ecs-c13b ~]# bash iftest02.sh please input your money:10000000let us get married!!
c. 判断文件是否为普通文件(双分支)
#!/bin/bashread -p 'please input a file name, for example /root/test.txt:' filenameif [ -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/bashfpath=/etc/passwdif [ -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脚本能不能写好,与逻辑思维,编程思维,没有太大的关系。

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