码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本之if以及case多分支

时间:2020-06-25 19:51:49      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:表达式   cas   strong   -o   管道   color   串处理   特性   逻辑或   

1.语法格式

1.1 最基本的格式

if [ condition ];then
    符合if时执行的语句
fi

 

1.2 扩展格式

if [ condition ];then
    符合该if时执行的语句
elif [ condition ];then
    符合该if时执行的语句 
else
    都不符合时执行的语句 
fi

其中
elif=else if
elif可以有多个,也可以没有

 

2.条件判断

2.1 文件目录判断

[ -d file ]    判断file是否目录
[ -e file ]    判断file是否存在
[ -f file ]    判断file是否普通文件
[ -r file ]    判断file是否可读
[ -s file ]    判断file是否非空
[ -w file ]    判断file是否可写
[ -x file ]    判断file是否可执行
[ -S file ]    判断file是否socket文件
[ -p file ]    判断file是否管道文件
[ -c file ]    判断file是否字符文件
[ -b file ]    判断file是否块文件
[ -L file ]    判断file是否软连接

 

2.2字符串判断

[ str1 == str2 ]  判断str1和str2是否相等
[ str1 != str2 ]  判断str1和str2是否不等
[ str1 \> str2 ]  判断str1是否比str2大,\为转义符
[ str1 \< str2 ]  判断str1是否比str2小,\为转义符
[ -z str ]        判断str的长度是否为0
[ -n str ]        判断str的长度是否为非0

 

2.3 数值判断

[ n1 -eq n2 ]   判断n1和n2是否相等
[ n1 -ne n2 ]   判断n1和n2是否不等
[ n1 -gt n2 ]   判断n1是否比n2大
[ n1 -ge n2 ]   判断n1是否大于等于n2
[ n1 -lt n2 ]   判断n1是否比n2小
[ n1 -le n2 ]   判断n1小于等于n2

 

2.4 逻辑判断

[ ! condition ] 逻辑非,如果condition 是false则返回为真
[ condition1 -a condition2 ] 逻辑与,condition1和condition2必须同时为真才为真
[ condition1 -o condition2 ] 逻辑或,condition1和condition2其中有一个为真则为真
[ condition1 ] && [ condition2 ] 布尔或,if判断时同-a,若是两个命令,则前面执行成功,才执行后面
[ condition1 ] || [ condition2 ] 布尔与,if判断时同-o,若是连个命令,则前面执行失败,才执行后面

 


3.if的高级特性:(())和[[ ]]

3.1(())

表示数学表达式,只用于数值

(( n1
== n2 )) 判断n1和n2是否相等 (( n1 != n2 )) 判断n1和n2是否不等 (( n1 > n2 )) 判断n1是否比n2大 (( n1 >= n2 )) 判断n1是否大于等于n2 (( n1 < n2 )) 判断n1是否比n2小 (( n1 <= n2 )) 判断n1是否小于等于n2 (( expr1 )) && (( expr2 )) 与,不支持-a,同(( expr1 && expr2 )) (( expr1 )) || (( expr2 )) 或,不支持-o,同(( expr1 || expr2 ))

 

(())还支持以下符号

n++     后增
n--     后减
++n     先增
--n     先减
!       取反
~       位求反
**      幂运算
<<      左位移
>>      右位移 
&       位与
|       位或
&&      逻辑与
||      逻辑或

 

3.2 [[ ]]

表示高级字符串处理功能,数值和字符串都可以使用,处理数值时同(())

[[ str1
< str2 ]] 判断str1是否比str2大,同[ str1 \< str2 ] [[ str1 > str2 ]] 判断str1是否比str2小,同[ str1 \> str2 ] [[ expr1 ]] && [[ expr2 ]] 与,不支持-a,同[[ expr1 && expr2 ]] [[ expr1 ]] || [[ expr2 ]] 或,不支持-o,同[[ expr1 || expr2 ]] [[ str == a* ]] 判断字符串是否以a开头

 

 

4. case多分支格式

case ${var} in
    "value1" )
        满足value1时执行的语句
    ;;
    "value2" )
        满足value2时执行的语句
    ;;
     ......省略其他分支......    
    *)
        以上都不满足时执行的语句
    ;;
    esac

 

shell脚本之if以及case多分支

标签:表达式   cas   strong   -o   管道   color   串处理   特性   逻辑或   

原文地址:https://www.cnblogs.com/gudanaimei/p/13191846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!