美文网首页
Shell脚本中的if和case逻辑判断

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

作者: 赤兔在云端 | 来源:发表于2018-03-09 10:21 被阅读0次

一、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版)

相关文章

网友评论

      本文标题:Shell脚本中的if和case逻辑判断

      本文链接:https://www.haomeiwen.com/subject/mlyyfftx.html