[SHELL]结构化命令之条件语句

1.if-then语句 

#!/bin/bash
username="root"
if grep $username /etc/passwd
then
echo "there is root"
fi

2.if-then-else

#!/bin/bash
username="hahaha"
if grep $username /etc/passwd
then
        echo "there is hahaha"
else
        echo "there is not hahaha"

fi

3.elif-then

#!/bin/bash
username1="hi"
username2="root"
if grep $username1 /etc/passwd
then
        echo "there is hi"
elif grep $username2 /etc/passwd
then
        echo "there is root"
else
        echo "lili"
fi

4.test命令

若命令成立,返回退出状态码0

if pwd
then 
    echo "hello"
fi

bash shell 提供了另一种条件测试方法,如下:

if [ condition ]

then 

  commands

fi

! ! ! ! ! ! ! ! 方括号内的两边一定要有空格

test命令可以进行三类比较;

  • 数值比较
  • 字符串比较
  • 文件比较

1.数值比较

#!/bin/bash
var_1=55
var_2=22
if [ $var_1 -gt $var_2 ] #一定要空格
then
        echo "var_1 > var_2"
else
        echo "var_1 <= var_2"
fi

bash shell不能处理浮点数,test也不能处理浮点数,所以这里如果比较浮点数的大小会报错

2.字符串比较

比较大小时注意>,<符号需要转义,即[ $var_1 \>$var_2 ]

3.文件比较

5.if-then高级特性 

bash提供了两种if-then语句中使用的高级特性:

  • 用于数学表达式的双括号
  • 用于高级字符串处理功能的双方括号

1.双括号

#!/bin/bash
var_1=44
var_2=22
if (( $var_1==$var_2*2 ))
then
        echo "var_1 =2x var_2"
else
        echo "var_1 !=2x var_2"
fi

2.使用双方括号(进行模式匹配)

#!/bin/bash
var=string
if [[ $var==s* ]]
then
        echo "var is $var"
else
        echo "none"
fi

6.case命令

case var in 

pattern1 | pattern2) command;;

pattern3) command;;

*) default command;;

esac

#!/bin/bash
var=string
case $var in
str) echo "str";;
string) echo "string";;
*) default echo "default";;
esac

猜你喜欢

转载自www.cnblogs.com/xhnxhnu/p/9118315.html