Bash if..else语句声明(shell中if else语句的用法)

linux Bash if..else语句声明 判断是计算机编程的最基本概念之一。就像任何其他的编程语言if,if..else,if..elif..else和嵌套if在Bash的语句可以用于基于特定条件来执行代码。在本教程中,我们将向您介绍Bash if语句的基础知识,并向您展示如何在shell脚本中使用它们。 By myfreax 5 Oct 2019

推断出程序编程的一个重要界定之一。好似任何其他的编程语言ifif..elseif..elif..else和嵌入if在Bash的语句可用作依据独特标准来执行编号。

在教学中,我们在这里为大家详解Bash if语句基本知识,同时向大伙儿呈现如何在shell脚本中运用她们。

if声明

Bash if条件句可以具备各种方式。最基本的if语句采用以下方法:

if TEST-COMMAND
then
  STATEMENTS
fi

if语句以if关键字逐渐,脚后跟条件表达式和then关键字。该语句以fi关键字结尾。

倘若TEST-COMMAND标值为True,则STATEMENTS执行。倘若TEST-COMMANDFalse,则什么也不会产生。

让我们看看下面的例子:

#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
  echo "Variable is greater than 10."
fi

该脚本将检查给定的数字是否超出10。将编号另存文本文档,然后从cmd运行它。

bash test.sh

该脚本将展示您键入数字。例如,如果你键入15检验命令将评为true,因为15超出10,echo命令会被执行。

Variable is greater than 10.

if..else语句

Bash if..else语句采用以下方法:

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

如果结果TEST-COMMANDTrueSTATEMENTS1将执行,要不然TEST-COMMANDFalseSTATEMENTS2将执行。else语句上只能够有一个子句。

让我们else在此前的脚本中添加一个子句:

#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
  echo "Variable is greater than 10."
else
  echo "Variable is equal or less than 10."
fi

倘若运行脚本并键入数字,脚本将按照数字是高过或者小于/等同于10来打印出不一样信息。

if..elif..else语句

Bash if..elif..else语句采用以下方法:

if TEST-COMMAND1
then
  STATEMENTS1
elif TEST-COMMAND2
then
  STATEMENTS2
else
  STATEMENTS3
fi

如果结果TEST-COMMAND1TrueSTATEMENTS1将执行,如果结果TEST-COMMAND2TrueSTATEMENTS2将执行。倘若所有检验命令都不因TrueSTATEMENTS2则执行。

elif语句中可以有一个或多个子句。该else子句是可选择的。

让我们elif在此前的脚本中添加一个子句:

#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
  echo "Variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "Variable is equal to 10."
else
  echo "Variable is less than 10."
fi

嵌入的If语句

Bash允许我们将if语句嵌入在if语句中。你们可以if在另一个if语句中放置好多个语句。

以下脚本将展示您键入三个数字,而且在三个数字中打印出最大的一个数字。

#!/bin/bash
echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3
if [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number"
  else
    echo "$VAR3 is the largest number"
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  then
    echo "$VAR2 is the largest number"
  else
    echo "$VAR3 is the largest number"
  fi
fi

导出来如下所示:

Enter the first number: 4
Enter the second number: 7
Enter the third number: 2
7 is the largest number

替代运用嵌入if语句,运用case语句一般更有效。

好多个规范

思维逻辑ORAND运算符允许你一直在if语句中运用好多个规范。

那也是脚本的另一个版本信息,可打印出三个数字中最大的数字。在这儿版本号,if我们在这里运用思维逻辑AND(&&运算符替代嵌入语句。

#!/bin/bash
echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3
if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number"
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number"
else
  echo "$VAR3 is the largest number"
fi

test操作符

在Bash中,检验命令采用以下句法文件类型之一:

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

如果想要脚本具有扩展性,则应该使用[所有POSIX Shell上边能用的旧检验命令。[[运用Bash,Zsh和Ksh作为默认Shell的大多数当今系统还支持test命令的升级版本(双括号。

要撤消检验表达式,挑选思维逻辑NOT!运算符。

下列属于一些常见运算符:

  • -n VAR -倘若VAR长短大于零,故有true。
  • -z VAR -倘若VAR为空,故有True。
  • STRING1 = STRING2 -真STRING1和STRING2同样。
  • STRING1 != STRING2 -真STRING1和STRING2各不相同。
  • INTEGER1 -eq INTEGER2 -真INTEGER1和INTEGER2同样。
  • INTEGER1 -gt INTEGER2 -True INTEGER1超出INTEGER2。
  • INTEGER1 -lt INTEGER2 -True INTEGER1小于INTEGER2。
  • INTEGER1 -ge INTEGER2 -True INTEGER1等同于甚至超过INTEGER2。
  • INTEGER1 -le INTEGER2 -True INTEGER1等同于或小于INTEGER2。
  • -h FILE -倘若FILE存在而且还是符号链接,故有true。
  • -r FILE -倘若FILE存在并且能读,故有true。
  • -w FILE -倘若FILE存在同时可写,故有true。
  • -x FILE -倘若FILE存在同时可执行,故有true。
  • -d FILE -倘若FILE存在而且还是文件名称,故有true。
  • -e FILE -倘若FILE存在而且还是文本文档,又和True无关紧要,而与类型(节点,文件名称,tcp协议等无关紧要。
  • -f FILE -倘若FILE存在而且还是基本上文本文档(并非文件名称或设备,故有true。

结论

至今为止,您应该对如何编写bash if语句有一个很好的把握。您还可以阅读有关如何比较字符串数组以及怎样检查文件是否存在的信息。

如果您有任何问题或意见和建议,请随时

LINUX

Bash Arrays(arrays.tostring)

2023-1-19 11:29:14

LINUX

您必须知道的Apache命令(查询apache是否安装的指令)

2023-1-19 11:34:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索