您的位置:首页 > 运维架构 > Shell

shell if-then条件语句

2017-12-29 16:02 239 查看
shell 结构化命令

if-then

if  command

then
command

fi

首先会运行if后边的命令,如果命令的退出码是0

则执行then部分的命令,如果退出码是其他值,shell

则会跳过并执行下一个shell命令。

if后边可以跟多个命令

if-then-else

if command

then
command

else
command

fi

当if后边的命令返回退出状态码0时,执行then后的命令

退出状态码不是0时,执行else语句。

嵌套if

if command

then
commands

elif command2

then 
more commands

fi

跟if-then的执行过程是一样的

test命令

if test condition 

then
commands

其中condition是test命令要测试的一系列参数和值。

在bash中test condition也可以用【condition】来表示

test命令可以判断3类条件:

数值比较

字符串比较 

文件比较

数值比较:

n1 -eq  n2       检查n1是否与n2相等

n1 -ge n2 检查n1是否大于或等于n2

n1 -gt n2 检查n1是否大于n2

n1 -le n2 检查n1是否小于或等于n2

n1 -lt n2 检查n1是否小于n2

n1 -ne n2 检查n1是否不等于n2

test命令无法处理浮点数。

字符串比较功能

str1  =  str2     检查str1是否和str2相同

str1  !=  str2 检查str1是否和str2不同

str1  <  str2 检查str1是否比str2小

str1  >  str2 检查str1是否比str2大

-n  str1  检查str1的长度是否非0

-z  str1  检查str的长度是否为0

文件比较

-d  file 检查file是否存在并是一个目录

-e file 检查file是否存在

-f  file 检查file是否存在并是一个文件

-r  file 检查file是否存在并可读

-s  file 检查file是否存在并非空

-w  file 检查file是否存在并可写

-x  file 检查file是否存在并可执行

-o file 检查file是否存在并属当前用户所有

-G file 检查file是否存在并且默认组与当前用户相同

file1 -nt  file2 检查file1是否比file2新

file1 -ot file2 检查file1是否比file2旧

if-then布尔运算

[ command ]&&[ command ] 同时满足条件才会执行

[ command ]||[ command ] 满足一个条件就可以执行

if-then的高级特性

用于数学表达式的双尖括号

用于高级字符串处理功能的双方括号

双尖括号中的运算符号不需要转义,比如>

格式如下:(( expression ))

双方括号支持模式匹配,所以可以定义正则表达式。

格式[[ expression ]]

case的用法:

case variable in

pattern1 | pattern2)command1::

pattern3)command2::

*) default commands::

esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: