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 提供了另一种test的简洁语法方法,如下:
if [ condition ]
then
commands
fi
#!/bin/bash if [ -e $1 ] then echo $1 else echo "$1 is not exist!" 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