大数据兼云计算(王明龙)讲师-LINUX-DAY20-SHELL-流程控制IF

**

IF判断

**


中括号 if 判断

if 单分支判断
-----------------------------------------------------------------------------
if test或[]
then              为真则执行                    
命令1
命令2
......
fi


if 的else失败分支判断
-----------------------------------------------------------------------------
if test或[]
then             为真则执行
命令1
命令2
......
else             为假则执行
命令1
命令2
......                
fi


举例:全自动新加用户并设置密码
[root@web wml]# cat if1.sh 
#!/bin/bash
c=`cat /etc/passwd | grep root| wc -l`
w=`cat /etc/passwd | grep zxy| wc -l`

pwd_eof()
{
useradd zxy
passwd zxy --stdin << EOF
1q2w3e4r
EOF
}

if [ -f /etc/passwd ]
then
   cat /etc/passwd | grep root
   if [ $c = 0 ]
   then
       echo "os is not user root"
   else
       echo "------------------------"
       echo "os is have user root"

       if [ $w = 0 ]
       then
           pwd_eof
       else
           echo "os is have user wsz"
       fi
   fi
else
   echo "/etc/passwd is not file"
fi




if的elif多重判断语句
-----------------------------------------------------------------------------
if test或[]
then                为真则执行
命令1
命令2
......
elif  test或[]     elif是在如果的意思,上面为假则执行 
then
命令1
命令2
......
else                上面两个都为假则执行
命令1
命令2 
......                
fi


举例:
#!/bin/bash
pw="/etc/passwd"
if [ -d $pw ];then
     cat $pw | wc -l

  elif [ -b $pw ];then
     cp $pw /root
     /usr/bin/ls /root/passwd

  elif [ -f $pw ];then
     head -1 $pw

  else
     echo "$pw is not dircory"
fi






用法:
------------------------------------------------------------------
if [ "a" != "b" ] &&或|| [ 5 -gt 1 ]             各过各的
if [[ "a" != "b" &&或|| "a" = "b" ]]            组成一个家庭

举例:
[ ]           单中括号不能包含两个以上判断条件,如下放在一起,会报错
----------------------------------------------------------------------------------------
[root@wml c]# vim f.sh
#!/bin/bash
if [ 0 -gt 1 && 0 -gt 2 ];then
      echo "0 -gt 1"
elif [ 0 -eq 0 ];then
      echo "0 -eq 0"
elif [ 1 -eq 1 ];then
      echo "1 -eq 1"
else
      echo "two is no"
fi
----------------------------------------------------------------------------------------
[root@wml c]# ./f.sh  
./f.sh: 第 3 行:[: 缺少 `]'
0 -eq 0


[[ ]]        超过两个以上判断,用双中括号,正常执行
------------------------------------------------------------------
#!/bin/bash
if [[ 0 -gt 1 && 0 -gt 2 ]];then
      echo "0 -gt 1"
  if [ 0 -eq 0 ];then
      echo "0 -eq 0"
elif [ 1 -eq 1 ];then
      echo "1 -eq 1"
else
      echo "two is no"
fi
------------------------------------------------------------------
[root@wml c]# ./f.sh  
0 -eq 0


if [ "a" != "b" ] &&或|| [ 5 -gt 1 ]             各过各的
------------------------------------------------------------------
#!/bin/bash

if [ 0 -lt 1 ] || [ 0 -gt 2 ];then
      echo "0 -lt 1"
elif [ 0 -eq 0 ];then
      echo "0 -eq 0"
elif [ 1 -eq 1 ];then
      echo "1 -eq 1"
else
      echo "two is no"
fi
------------------------------------------------------------------
[root@wml c]# ./f.sh  
0 -lt 1



举例:
------------------------------------------------------------------
&&两个其中有一个不成立,则执行else
# vim wml.sh
#!/bin/bash
if [[ "a" != "b" && "a" = "b" ]] 
then
echo ok
else
echo no
fi
# chmod +x wml.sh
# ./wml.sh
    no

&&两个都为真则执行then
# vim wml.sh
#!/bin/bash
if [[ "a" != "b" && "a" = "a" ]] 
then
echo ok
else
echo no
fi
# chmod a+x wml.sh
# ./wml.sh 
    ok


||两个其中有一个成立则执行

# vim wml.sh
#!/bin/bash
if [[ "a" != "b" || "a" = "c" ]] 
then
echo ok
else
echo no
fi
# chmod a+x wml.sh
# ./wml.sh
    ok




() 小括号的 if 判断

单分支if语句格式
-----------------------------------------------------------------------------------------------------------------------------
定义变量=变量值
if ((变量[<,>,=,>=,<=,!=,==]数值)) ;  then            // 其中“!=”为不等于,“==”为等于
   命令序列
fi 
定义变量=变量值
if  [  “$变量”  [<,>,=,>=,<=,!=,==]  ”测试值”  ]


双分支if语式
-----------------------------------------------------------------------------------------------------------------------------
定义变量=变量值
if ((变量[<,>,=,>=,<=,!=,==]数值)) ;  then            // 其中“!=”为不等于,“==”为等于
   命令序列1
else
   命令序列2 
fi

多分支if语句
-----------------------------------------------------------------------------------------------------------------------------
定义变量=变量值
if (( 变量[<,>,=,>=,<=,!=,==]数值));  then            // 其中“!=”为不等于,“==”为等于
   命令序列1
elif ((变量[<,>,=,>=,<=,!=,==]数值)) ;  then          // 其中“!=”为不等于,“==”为等于
   命令序列2
else
   命令序列3 
fi


实例:统计系统中有多少个可登录用户
vim wml.sh
---------------------------------------------------------------
#!/bin/bash
i=`grep /bin/bash$ /etc/passwd |wc  -l`
if (($i<=3)) ; then
   echo "<=3"
elif (($i<=5)) ; then
   echo "<=5"
....可以加更多elif
else
   echo ">3 and >5"
fi


参数判断符
---------------------------------------------------------------------------------------------------
-r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真
含条件选择的shell脚本 对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。
基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在

举例:
-------------------------------------------------------
#!/bin/bash
a="/etc/passwd"
if [ -f $a ];then
     cat /etc/passwd > /root/shell/passwd
     ls -l /root/shell/
elif [ -d $a ];then
     touch /root/shell/tjd.txt
else
     date
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT灵魂摆渡者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值