Bash if..else语句
在本教程中,我们将带您了解Bash的基础知识 if
语句,并向您展示如何在Shell脚本中使用它。
决策是计算机编程的最基本概念之一。 像其他任何编程语言一样, if
, if..else
, if..elif..else
并嵌套 if
Bash中的语句可用于根据特定条件执行代码。
if
声明编号
重击 if
条件可以具有不同的形式。 最基本的 if
语句采用以下形式:
if TEST-COMMAND
then
STATEMENTS
fi
的 if
语句以 if
关键字,后跟条件表达式和 then
关键词。 该语句以 fi
关键词。
如果 TEST-COMMAND
评估为 True
, STATEMENTS
被执行。 如果 TEST-COMMAND
退货 False
,什么也没发生, STATEMENTS
被忽略。
通常,良好的做法是始终缩进代码并用空行分隔代码块。 大多数人选择使用4空格还是2空格缩进。 缩进和空白行使您的代码更具可读性和组织性。
让我们看下面的示例脚本,该脚本检查给定数字是否大于10:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
fi
将代码保存在文件中,然后从命令行运行它:
bash test.sh
该脚本将提示您输入一个数字。 例如,如果您输入15, test
命令将计算为 true
因为15大于10,并且 echo
里面的命令 then
子句将被执行。
The variable is greater than 10.
if..else
声明编号
重击 if..else
语句采用以下形式:
if TEST-COMMAND
then
STATEMENTS1
else
STATEMENTS2
fi
如果 TEST-COMMAND
评估为 True
, STATEMENTS1
将被执行。 否则,如果 TEST-COMMAND
退货 False
, STATEMENTS2
将被执行。 你只能有一个 else
语句中的子句。
让我们添加一个 else
上一个示例脚本的子句:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
else
echo "The variable is equal or less than 10."
fi
如果运行代码并输入数字,则脚本将根据数字是大于还是小于/等于10来打印不同的消息。
if..elif..else
声明编号
重击 if..elif..else
语句采用以下形式:
if TEST-COMMAND1
then
STATEMENTS1
elif TEST-COMMAND2
then
STATEMENTS2
else
STATEMENTS3
fi
如果 TEST-COMMAND1
评估为 True
, STATEMENTS1
将被执行。 如果 TEST-COMMAND2
评估为 True
, STATEMENTS2
将被执行。 如果没有任何测试命令求和 True
, STATEMENTS2
被执行。
您可以有一个或多个 elif
语句中的子句。 的 else
子句是可选的。
条件被顺序评估。 一旦条件恢复 True
其余条件未执行,程序控制移至 if
陈述。
让我们添加一个 elif
上一个脚本的子句:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
echo "The variable is equal to 10."
else
echo "The variable is less than 10."
fi
巢状 if
声明#
重击让你筑巢 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.
通常,使用 case
语句嵌套 if
陈述。
多个条件
逻辑上 OR
和 AND
运算符允许您在 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
测试操作员
在Bash中, test
命令采用以下语法格式之一:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
为了使脚本具有可移植性,建议使用旧测试 [
在所有POSIX shell上都可用的命令。 的新升级版本 test
命令 [[
使用Bash,Zsh和Ksh作为默认shell的大多数现代系统都支持(双括号)。
要否定测试表达式,请使用逻辑 NOT
(!
)运算符。 比较字符串时,请始终使用单引号或双引号,以避免单词分裂和乱码问题。
以下是一些最常用的运算符:
-n
VAR
-如果长度为trueVAR
大于零。-z
VAR
-如果VAR
是空的。STRING1 = STRING2
-如果为真STRING1
和STRING2
相等。STRING1 != STRING2
-如果为真STRING1
和STRING2
不相等。INTEGER1 -eq INTEGER2
-如果为真INTEGER1
和INTEGER2
相等。INTEGER1 -gt INTEGER2
-如果为真INTEGER1
大于INTEGER2
。INTEGER1 -lt INTEGER2
-如果为真INTEGER1
小于INTEGER2
。INTEGER1 -ge INTEGER2
-如果为真INTEGER1
等于或大于INTEGER2。INTEGER1 -le INTEGER2
-如果为真INTEGER1
等于或小于INTEGER2
。-h
FILE
-如果FILE
存在并且是符号链接。-r
FILE
-如果FILE
存在并且可读。-w
FILE
-如果FILE
存在且可写。-x
FILE
-如果FILE
存在并且可执行。-d
FILE
-如果FILE
存在并且是目录。-e
FILE
-如果FILE
存在并且是文件,与类型(节点,目录,套接字等)无关。-f
FILE
-如果FILE
存在并且是常规文件(不是目录或设备)。
结论#
的 if
, if..else
和 if..elif..else
语句允许您通过评估给定条件来控制Bash脚本的执行流程。
如果您有任何疑问或反馈,请随时发表评论。
bash终端