云南外贸建站推广,网站开发公司电话,优秀网站建设多少钱,设计单位在厦门什么网站目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令#xff0c… 目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令判断该命令的结果但在编程中我们多数情况需要判断一个变量的值是否为空判断两个变量的值谁更大判断变量的字符串是否相等这些判断条件使用 if 语句无法直接判断。这篇文章介绍 二、test 命令
2.1 test 命令 if 语句中只能执行该语句后面的命令并判断命令的退出状态码而不能判断其他的条件如两个值是否相等。如果想要判断两个值是否相等就需要把这个判断放到一个命令中再把这个命令放在 if 语句后面去执行而 test 命令就可以来做这样的判断。 如果 test 命令中列出的条件成立那么 test 命令就会退出并返回退出状态码 0。 test 命令的格式非常简单 test conditioncondition 是 test 命令要测试的一系列参数和值。当用在 if-then 语句中时 test 命令看起来如下所示 if test condition
thencommands
fi如果不写 test 命令的 condition 部分则它会以非 0 的退出状态码退出并执行 else 代码块语句。 2.2 方括号测试条件 bash shell 提供了另一种条件测试方式无须在 if-then 语句中写明 test 命令 if [ condition ]
thencommands
fi方括号定义了测试条件。 注意第一个方括号之后和第二个方括号之前 必须 留有空格否则就会报错。 2.3 test 命令和测试条件可以判断的 3 类条件 test 命令和测试条件可以判断 3 类条件 数值比较字符串比较文件比较 2.3.1 数值比较 使用 test 命令最常见的情形是对两个数值进行比较。下表列出了测试两个值时可用的条件参数 比 较描 述n1 -eq n2检查 n1 是否等于 n2n1 -ge n2检查 n1 是否大于或等于 n2n1 -gt n2检查 n1 是否大于 n2n1 -le n2检查 n1 是否小于或等于 n2n1 -lt n2检查 n1 是否小于 n2n1 -ne n2检查 n1 是否不等于 n2 注意对于条件测试 bash shell 只能处理整数。 2.3.2 字符串比较 条件测试还允许比较字符串值。下表列出了可用的字符串比较功能 比 较描 述str1 str2检查 str1 是否和 str2 相同str1 ! str2检查 str1 是否和 str2 不同str1 str2检查 str1 是否小于 str2str1 str2检查 str1 是否大于 str2-n str1检查 str1 的长度是否不为 0-z str1检查 str1 的长度是否为 0 注意 在比较字符串的相等性时比较测试会将所有的标点和大小写情况都考虑在内大于号和小于号必须转义(\、\ )否则 shell 会将其视为重定向符将字符串值当作文件名。比较测试中使用的是标准的 Unicode 顺序根据每个字符的 Unicode 编码值来决定排序结果结果和 sort 命令不同 三、复合条件测试 if-then 语句允许使用布尔逻辑将测试条件组合起来。可以使用以下两种布尔运算符 [ condition1 ] [ condition2 ][ condition1 ] || [ condition2 ] 第一种布尔运算使用布尔运算符 AND 来组合两个条件。要执行 then 部分的命令两个条件都必须满足。 第二种布尔运算使用 OR 布尔运算符来组合两个条件。如果任意条件为真那么 then 部分的命令就会执行。 例子 #!/bin/bash
# Testing an AND Boolean compound condition
#
if [ -d $HOME ] [ -w $HOME/newfile ]
then
echo The file exists and you can write to it.
#
else
echo You cannot write to the file.
#
fi四、if-then 的高级特性 bash shell 还提供了 3 个可在 if-then 语句中使用的高级特性。\ 在子 shell 中执行命令的单括号。用于数学表达式的双括号。用于高级字符串处理功能的双方括号。 五、case 命令 如果在在一组可能的值中寻找特定值使用if语句来判断的话代码会很冗长。shell提供了case命令来解决此类问题。 case 命令会采用列表格式来检查变量的多个值其格式如下 case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac例子 #!/bin/bash
# Using a short case statement
#
case $USER in
rich | christine)
echo Welcome $USER
echo Please enjoy your visit.;;
barbara | tim)
echo Hi there, $USER
echo Were glad you could join us.;;
testing)
echo Please log out when done with test.;;
*)
echo Sorry, you are not allowed here.
esac如果文章有帮助的话点赞、收藏⭐支持一波谢谢