推断出程序编程的一个重要界定之一。好似任何其他的编程语言if
,if..else
,if..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-COMMAND
是False
,则什么也不会产生。
让我们看看下面的例子:
#!/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-COMMAND
为True
,STATEMENTS1
将执行,要不然TEST-COMMAND
为False
,STATEMENTS2
将执行。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-COMMAND1
为True
,STATEMENTS1
将执行,如果结果TEST-COMMAND2
为True
,STATEMENTS2
将执行。倘若所有检验命令都不因True
,STATEMENTS2
则执行。
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语句一般更有效。
好多个规范
思维逻辑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
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
语句有一个很好的把握。您还可以阅读有关如何比较字符串数组以及怎样检查文件是否存在的信息。
如果您有任何问题或意见和建议,请随时
