
一、if-then 语句在编程中结构化命令是指能够对命令的执行流程施加逻辑控制的语句。最基本的结构化命令就是 if-then。基本语法if commandthencommandsfifi 表示 if 语句块的结束。核心原理Bash Shell 的 if 语句并不是直接判断条件是否为真而是运行 if 后面的命令然后检查该命令的退出状态码如果状态码为 0命令执行成功则执行 then 后面的命令如果状态码为 非0命令执行失败则跳过 then 后面的命令这种设计意味着任何命令都可以放在 if 后面——只要命令成功执行then 部分就会运行。简写形式将 then 放在同一行if command; thencommandsfi二、if-then-else 语句当命令成功执行时执行一组操作失败时执行另一组操作就需要 if-then-elseif commandthencommands # 命令成功时执行elsecommands # 命令失败时执行fi三、elif 多分支语句当需要判断多个条件时可以使用 elif 来扩展 else 部分避免嵌套多层 ifif command1thencommandselif command2thencommandselif command3thencommandsfi四、test 命令if-then 只能判断命令的退出状态码而 test 命令提供了测试不同条件的能力。当 test 中列出的条件成立时test 返回退出状态码 0if-then 就会执行 then 部分。两种等价语法if test conditionthencommandsfi或使用方括号更常用if [ condition ]thencommandsfi注意方括号与条件内容之间必须有空格。[ condition ] 正确[condition] 错误。test 命令可以判断三类条件注意test 命令只能处理整数不能用于浮点数比较。字符串相等性所有的标点和大小写情况都考虑在内字符串顺序大于号和小于号必须转义/大小写字母排序与sort命令恰好相反字符串大小-n和-z可以检查一个变量是否含有数据。测试Linux文件系统上文件和目录的状态。五、复合条件测试if-then 允许使用布尔逻辑组合多个测试条件AND与 [ condition1 ] [ condition2 ] — 两个条件都满足时才返回 TRUEOR或 [ condition1 ] || [ condition2 ] — 任一条件满足时返回 TRUE示例六、双括号和双方括号双括号 (( expression )) — 高级数学运算test 命令只能做简单的整数比较而双括号命令支持更多数学运算符且不需要转义大于号和小于号。if (( $num 10 )); thenecho “num 大于 10”fiif (( $num % 2 0 )); thenecho “num 是偶数”fi双括号中支持的运算符包括、–、!、~、**幂运算、、、、|、、|| 等。双方括号 [[ expression ]] — 高级字符串比较双方括号支持模式匹配如通配符且不需要转义大于号和小于号。if [[ $str “hello” ]]; thenecho “字符串是 hello”fi#使用通配符进行模式匹配if [[ $str h* ]]; thenecho “字符串以 h 开头”fi