Bash 第四讲 if语句 if-else语句 else-if语句 case语句

10 篇文章 0 订阅
8 篇文章 0 订阅

Bash if语句

if语句在顺序执行代码语句的流程中执行条件性任务。根据设置的条件,判断是否运行一段代码语句。

基础

在if语句中,如果判断为true,则执行给定的代码语句进行相关操作。如果判断为false,则略过给定的代码语句不进行相关操作。 基本语法:

if [ expression ];
then
statements
fi

注: expression 是判断表达式。 statements 是给定的执行语句。

  • 结合&&逻辑运算符使用多个条件:
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
  • 结合||逻辑运算符使用多个条件:
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
  • 同时使用&&和||逻辑运算符:
if [ expression_1 && expression_2 || expression_3 ];
then
statements
fi

示例:

#!/bin/bash

# TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi

# TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi

执行后得到以下结果:

Conditions are true
if 语句选项常用列表
选项描述
! EXPRESSION检查EXPRESSION是否为假。
-n STRING检查STRING的长度是否大于零。
-z STRING检查STRING的长度是否为零(即为空)
STRING1 == STRING2检查STRING1是否等于STRING2。
STRING1 != STRING2检查STRING1是否不等于STRING2。
INTEGER1 -eq INTEGER2检查INTEGER1在数值上是否等于INTEGER2。
INTEGER1 -gt INTEGER2检查INTEGER1在数值上是否大于INTEGER2。
INTEGER1 -lt INTEGER2检查INTEGER1在数值上是否小于INTEGER2。
-d FILE检查FILE是否存在并且它是一个目录。
-e FILE检查FILE是否存在。
-r FILE检查FILE是否存在,并授予读取权限。
-s FILE检查FILE是否存在并且其大小大于零(表示它不为空)。
-w FILE检查FILE是否存在并授予写权限。
-x FILE检查FILE是否存在并授予执行权限。
嵌套 if 语句

在 Bash 的实际运用中可能会需要多个 if 语句。这时可能就会出现在一个 if 语句中使用另一个 if 语句的情况,这被称为嵌套 if 语句。 示例:

#!/bin/bash
#Nested if statement

if [ $1 -gt 50 ]
then
  echo "Number is greater than 50."

  if (( $1 % 2 == 0 ))
  then
    echo "and it is an even number."
  fi
fi

执行后得到以下结果:

Number is greater than 50.
and it is an even number.

Bash if-else语句

if-else语句同if用于在代码语句的顺序执行流程中执行条件任务。当判断为true,执行第一组给定的代码语句。当判断为false,执行另一组给定的代码语句。

基础

语法:

if [ condition ];
then
   <if block commands>
else
  <else block commands>
fi

注:

  • condition 是条件语句。
  • block commands 是给定的执行语句。
  • 可以使用一组以逻辑运算符连接的一个或多个条件。
  • 其他块命令包括一组在条件为false时执行的代码语句。
  • 条件表达式后的分号 ;是必须的。
    示例:
#!/bin/bash

#when the condition is true
if [ 10 -gt 3 ];
then
  echo "10 is greater than 3."
else
  echo "10 is not greater than 3."
fi

#when the condition is false
if [ 3 -gt 10 ];
then
  echo "3 is greater than 10."
else
  echo "3 is not greater than 10."
fi

执行后得到以下结果:

10 is greater than 3.
3 is not greater than 10.
单行编写

您可以在一行中编写完整的if-else语句以及命令。需要遵循以下规则:

  • 在if和else的语句末尾使用**;**。
  • 使用空格作为分隔符以此追加其他语句。
    示例:
#!/bin/bash

read -p "Enter a value:" value
if [ $value -gt 9 ]; then echo "The value you typed is greater than 9."; else echo "The value you typed is not greater than 9."; fi

执行后得到以下结果:

Enter a value:3
The value you typed is not greater than 9.
嵌套语句

同if语句的嵌套一样,if-else语句也能够嵌套使用。如下示例:

#!/bin/bash

read -p "Enter a value:" value
if [ $value -gt 9 ];
then
  if [ $value -lt 11 ];
  then
     echo "$value>9, $value<11"
  else
    echo "The value you typed is greater than 9."
  fi
else echo"The value you typed is not greater than 9."
fi

执行后得到以下结果:

Enter a value:5
The value you typed is not greater than 9.

Bash else-if语句

else-if语句是if-else语句的补充。 else-if语句中有多个elif,每个elif都有一个布尔表达式。如果第一个if判定为false,则检查第二个if语句。

基础

语法:

if [ condition ];
then
<commands>
elif [ condition ];
then
<commands>
else
<commands>
fi

注:
同if-else一样,可以使用&&或||逻辑运算符来连接任意数量的条件。
当条件为true时执行命令集。若都为false,则执行 else···fi 内部的命令块。
示例:

#!/bin/bash

read -p "输入分数:" num

if [ $num -gt 90 ];
then
echo "你很优秀."
elif [ $num -lt 60 ];
then
echo "你该努力了."
else
echo "继续加油."
fi

分别以不同数字执行后得到以下结果:

  • 输入100时,if的判断为true。
输入分数:100
你很优秀.
  • 输入80时,判断都为false。
输入分数:80
继续加油.
  • 输入59时,elif判断为true。
输入分数:59
你该努力了.

Bash case语句

case 语句通常用于简化具有多种不同选择的复杂条件语句,使 Bash 脚本更具可读性,并更易于维护。

基础
语法:
case expression in
    pattern_1)
        statements
        ;;
    pattern_2)
        statements
        ;;
    pattern_3|pattern_4|pattern_5)
        statements
        ;;
    pattern-n)
        statements
        ;;
    *)
        statements
        ;;
esac

注:

  • 可以运用|分隔的多个模式运算符,运算符指示模式列表的终止。
  • pattern) statements这样的模式语句被称为子句,须以;;终止。
  • *用于定义默认情况下的最终模式。当用作最后一种匹配模式时,它作为默认匹配。
运作规则:

case 语句扩展表达式并尝试与每个包含的模式进行匹配。若找到匹配项,将执行与该项连接的语句直至;;结束。
若匹配项成功,case以最后执行的语句的退出状态终止。
若匹配项失败,case的退出状态为零。
若写入了默认的*模式,那么在匹配其他项失败后将执行它。

示例:
#!/bin/bash

echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read -p "Type your OS Name:" OS

case $OS in
    Windows|windows|window|win)
        echo "That's common. You should try something new."
        echo
        ;;
    Android|android)
        echo "This is my favorite. It has lots of applications."
        echo
        ;;
    Chrome|chrome)
        echo "Cool!!! It's for pro users. Amazing Choice."
        echo
        ;;
    Linux|linux)
        echo "You might be serious about security!!"
        echo
        ;;
    *)
        echo "Sounds interesting. I will try that."
        echo
        ;;
esac

执行后得到以下结果:

which Operating System are you using?
Windows, Android, Chrome, Linux, Others?
Type your OS Name:linux
You might be serious about security!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值