if,case

2017-07-03  本文已影响0人  素瑾汐

if

条件选择,选择执行,可嵌套

单分支
      if 判断条件;then
                条件为真的分支代码
      fi

双分支
      if 判断条件;then
                条件为真的分支代码
      else
                条件为假的分支代码 
      fi

多分支
      if 判断条件1;then
                条件为真的分支代码
      elif 判断条件2;then
                条件为真的分支代码
      elif 判断条件3;then
                条件为真的分支代码
      else
                以上条件都为假的分支代码
      fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

例子:根据命令的退出状态来执行命令
if ping -c1 -W2 station1 &> /dev/null; then
echo 'Station1 is UP'
elif grep "station1" ~/maintenance.txt &> /dev/null then
echo 'Station1 is undergoing maintenance‘
else
echo 'Station1 is unexpectedly DOWN!' exit 1
fi

[root@centos SC]#vim age.sh
#!/bin/bash
######输入一个数
read -p "please input your age: " age
######判断输入的值是否为数字,如有不是,提示输入数字并退出
[[ ! "$age" =~ ^[[:digit:]]+$ ]] && echo please input digital && exit 100
######对输入的数进行判断,从而执行相应命令
if [ "$age" -le 18 ];then
        echo "you are baby" 
elif [ "$age" -gt 18 -a "$age" -le 60 ];then
        echo you need work hard
elif [ "$age" -le 80 ];then
        echo "you can enjoy life"
else
        echo "you will be lucky"
fi
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
"age.sh" 12L, 331C written                                                
[root@centos SC]#chmod +x age.sh
######测试结果
[root@centos SC]#./age.sh       
please input your age: 2
you are baby
[root@centos SC]#./age.sh
please input your age: 18
you are baby
[root@centos SC]#./age.sh
please input your age: 19
you need work hard
[root@centos SC]#./age.sh
please input your age: 65
you can enjoy life
[root@centos SC]#./age.sh
please input your age: 85
you will be lucky

case

case语句:条件判断

case  变量引用 in
PATH1)
                分支1
                ;;  
PATH2)
                分支2
                ;;
...
*)
                默认分支
                ;;
esac

case支持glob风格的通配符:

     *:任意长度任意字符
     ?:任意单个字符
     []:指定范围内的任意单个字符
     a|b:a或b

例子:

[root@centos SC]#vim yesorno.sh 
#!/bin/bash
#####提示输入,读取输入的值
read -p "please input yes or no: " ans
#####将输入转换为小写输出
ans=`echo $ans |tr '[:upper:]' '[:lower:]'`
#####进行判断,执行相应命令
case $ans in
y|ye|yes)
    echo this is yes
    ;;
n|no)
    echo this is no
    ;;
*)
    echo This is other information , please input yes or no
esac
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~                                                                                           
~  
######测试结果                                                                                         
[root@centos SC]#./yesorno.sh     
please input yes or no: y
this is yes
[root@centos SC]#./yesorno.sh 
please input yes or no: Ye
this is yes
[root@centos SC]#./yesorno.sh 
please input yes or no: yeS
this is yes
[root@centos SC]#./yesorno.sh 
please input yes or no: n
this is no
[root@centos SC]#./yesorno.sh 
please input yes or no: No
this is no
[root@centos SC]#./yesorno.sh 
please input yes or no: nO
this is no
[root@centos SC]#./yesorno.sh 
please input yes or no: P
This is other information , please input yes or no
上一篇下一篇

猜你喜欢

热点阅读