Shell脚本中的if和case逻辑判断

一、if 逻辑判断

1.1 基本语法和大小判断

在shell脚本中,if逻辑判断的基本语法为:

if 判断语句; then
    command
elif 判断语句; then
    command
else
    command
fi

例如:

#! /bin/bash
read -p "Please input your score: " a
if (($a<60)); then
    echo "You didn't pass the exam."
elif (($a>=60)) && (($a<85)); then
    echo "Good! You pass the exam."
else
    echo "Very good! Your socre is very high!"
fi

需要注意的是shell的判断语句也有特殊的格式,例如(($a<60)),必须有两层括号。此外还可以使用[]的形式,但是不能用>、<这些关系运算符了,使用[]的对应符号如下(注意'['的右边和']'的左边时必须留出空格):

使用(()) 使用[] 示例
< -lt (($a<5)) 等价于 [ $a -lt 5 ] #注意空格
<= -le (($a<=5)) 等价于 [ $a -le 5 ]
> -gt (($a>5)) 等价于 [ $a -gt 5 ]
>= -ge (($a>=5)) 等价于 [ $a -ge 5 ]
== -eq (($a==5)) 等价于 [ $a -eq 5 ]
!= -ne (($a!=5)) 等价于 [ $a -ne 5 ]
1.2 文档属性判断

Shell脚本中还经常用if来判断文档的属性,具体格式为:

if [ -e filename ]; then    #同样地,注意[]里的空格

参数-e是判断文件是否存在的,其他常用参数如下:

参数 含义
if [ -e filename ] 判断文件或目录是否存在
if [ -d filename ] 判断是不是目录,并是否存在
if [ -f filename ] 判断是否是普通文件,并存在
if [ -r filename ] 判断文档是否有读权限
if [ -w filename ] 判断文档是否有写权限
if [ -x filename ] 判断文档是否有执行权限

二、case逻辑判断

使用case的语法为:

case 变量 in
    value1)
        command
        ;;
    value2)
        command
        ;;
    *)
        command
        ;;
esac

case结构不限制value的个数,*代表所有其他值。下面是一个示例脚本,用来判断奇数还是偶数:

#! /bin/bash

read -p "Input a number: " n
a=$[$n%2]

case $a in
    1)
        echo "The number is odd."
        ;;
    0)
        echo "The number is even."
        ;;
    *)
        echo "It's not a number!"
        ;;
esac

参考:跟阿铭学Linux(第2版)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,299评论 0 38
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,560评论 1 19
  • 递归是很多算法都使用的一种编程方法。听说递归是一种十分优雅的问题解决办法,可是对于初涉递归的我,还没有形成这种独特...
    爱吃西瓜的番茄酱阅读 1,302评论 0 5
  • I:上面片段告诉我们判断1件事儿是否我有价值去.可以从效益值和收益半衰期两方面来衡量。组合和可以将其分为1:高效益...
    玲xiehaohao阅读 286评论 0 1
  • 没有谁永远都是第一名,人都有瓶颈期。热爱的东西,也可能会因为自己做得不够好,完成得不够完美,附加事情配合得不够完善...
    小小风车阅读 200评论 0 0

友情链接更多精彩内容