嵌套 if 语句

我们可以在另一个 if 语句中使用 if 语句(可以嵌套 if 语句)。
我们可以拥有尽可能多的嵌套 if 语句级别。
在以下示例中:

  1. 我们输入年份作为命令行参数。

  2. 脚本将 $1 的值赋给 year 变量。

  3. 脚本的其余部分确定输入的年份是否为闰年,如果是则打印适当的消息。

第二个 if 语句包含一个 if 语句作为它的语句之一,这是嵌套发生的地方。
对于将年份打印为闰年的脚本:

  1. 输入的年份可以被 4 整除的条件必须为真。

  2. 年份不能被 100 整除的条件也必须为真。

#!/bin/bash
if [ $# -ne 1 ] 
then
	echo "You need to enter the year."
	exit 1 
fi
year=
if [ $[$year % 400] -eq "0" ]
then
	echo "$year is a leap year!" 
elif [ $[$year % 4] -eq 0 ]
then
	if [ $[$year % 100] -ne 0 ]
	then
		echo "$year is a leap year!"
	else
		echo "$year is not a leap year."
	fi
else
	echo "$year is not a leap year."
fi

if 语句

if 语句允许我们根据某些命令的成功或者失败来指定要在 shell 脚本中执行的操作过程。
它是一个条件语句,允许在执行另一个语句之前进行测试。
最简单形式的语法是:

if [ condition ] 
then
	block_of_statements
fi

其中:

  • if 语句中的条件通常涉及数字或者字符串测试比较,但它也可以是成功时返回状态 0 和失败时返回非零状态的任何命令。
  • then 语句之后的语句可以是任何有效的 UNIX 命令、任何可执行的用户程序、任何可执行的 shell 脚本或者任何 shell 语句,但 fi 除外。
  • 用 fi 语句结束每个 if 语句。

if 循环中的多个条件(布尔运算符)

if 循环的另一个非常有用的示例是在单个 if 语句中测试多个条件。
我们可以使用 OR (||)、AND (&&) 等布尔运算符来指定多个条件。
下面是在 if 循环条件中指定“AND”条件的示例。

#!/bin/bash
num=150
if [ $num -gt 100 ] && [ $num -lt 200 ]
then
	echo "The number lies between 100 and 200"
fi
Bash if 语句
查看更多教程 https://on  itroad.com

if/then/elif/else 语句

在 if/then/elif/else 形式的 if 语句中,第一个 else 变成了另一个 if 语句或者“elif”,而不是一个简单的 else。
Shell 首先评估条件 1,然后是条件 2,依此类推,以第一个成功的条件停止。
然后执行与该成功条件关联的语句,然后是 fi 语句之后的任何语句。
如果没有一个条件成功,则执行 else 语句之后的语句。
然后继续执行 fi 语句之后的任何语句。
if/then/elif/else 的语法是:

if [ condition 1 ]  
then
	block_of_statements 
elif [ condition 2 ] 
then
	block_of_statements
else 
	block_of_statements
fi

下面是 if/then/elif/else 形式的 if 循环语句的示例。

!/bin/bash
total=100
if [ $total -eq 100 ]
then
 echo "total is equal to 100"
elif [ $total -lt 100 ]
then
 echo "total is less than 100"
else
 echo "total is greater than 100"
fi

注 – if/then/elif/else 语法可以根据需要在最后的 else 语句之前包含尽可能多的 elif 命令语句。
在每个 elif 后面跟着一个 then 语句。

以下是 elif 梯形语句的示例。

#!/bin/bash
name=snoopy
if [ "$name" = "snoopy" ] then
	echo "It was a dark and stormy night."
elif [ "$name" == "charlie" ]
then
	echo "You’re a good man Charlie Brown."
elif [ "$name" == "lucy" ]
then
	echo "The doctor is in."
elif [ "$name" == "schroeder" ]
then
	echo "In concert." 
else
	echo "Not a Snoopy character."
fi

if then else 语句

在条件中,当测试条件成功或者失败时,我们经常需要执行任务。
shell 可以使用 if/then/else 语法来适应这一点。
在 if/then/else 形式的 if 语句中,如果条件成功,则执行 then 语句之后的语句块。
继续执行 fi 语句之后的语句。
如果 if 语句中的条件失败,则跳过 then 语句后面的语句块,执行 else 后面的语句。
继续执行 fi 语句之后的语句。
if/then/else 的语法是:

if [ condition ] 
then
	block_of_statements
else
	block_of_statements
fi

下面是一个使用字符串比较的 if else 循环的简单示例。
它将检查变量“total”的值是否等于 100。

#!/bin/bash
total=100
if [ $total -eq 100 ]; then
 echo "total is equal to 100"
else
 echo "total is not equal to 100"
fi

数字和字符串比较

我们可以在 bash 脚本中比较数字和字符串,并基于它进行条件 if 循环。
以下示例设置一个变量并使用 if 语句测试该变量的值。
then 语句与 if 放在同一行。

#!/bin/bash
age=21
if [ $age -gt 18 ]
then
  echo "You are old enough to drive in most places."
fi

下面是一些最常用的数字比较。

数字比较在以下情况下返回真 (0):
[ $num1 -eq $num2 ]num1 等于 num2
[ $num1 -ne $num2 ]num1 不等于 num2
[ $num1 -lt $num2 ]num1 小于 num2
[ $num1 -gt $num2 ]num1 大于 num2
[ $num1 -le $num2 ]num1 小于或者等于 num2
[ $num1 -ge $num2 ]num1 大于或者等于 num2

与数字比较类似,我们也可以在 if 循环中比较字符串。
在下面的示例中,一个变量值被设置为一个字符串,并在 if 循环中进一步与字符串“fred”进行比较。

#!/bin/bash
name=John
if [ $name = "John" ]
then
  echo "John is here !!!"
fi

下面是最常用的字符串比较。

字符串比较在以下情况下返回真 (0):
[ str1 = str2 ]str1 等于 str2
[ str1 != str2 ]str1 不等于 str2
[ str1 < str2 ]str1 按词法顺序在 str2 之前
[ str1 > str2 ]str1 按词法顺序跟在 str2 之后
[ -z str1 ]str1 的长度为零(持有空值)
[ -nstr1 ]str1 具有非零长度(包含一个或者多个字符)

注 – 词法顺序意味着小写字母比大写字母具有更大的价值。
因此,尝试比较大小写混合的字符串可能会产生意想不到的结果。

日期:2020-09-17 00:14:55 来源:oir作者:oir