时间:2023-06-02 16:16:41 来源: 人气:
linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂。, 1、强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式。, 2、复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break)、unconditional follow up(无条件继续)和conditional follow up(有条件继续)。, 这篇文章的重点是上面的第2点。, case的无条件继续和有条件继续是bash 4.1.x及之后的版本中才有的特性。, 执行如下命令可以查看你当前bash的版本, echo $BASH_VERSION, 常规的break是在每一项后面加;;, 无条件继续是在每一项后面加;&, 有条件继续实在每一项后面加;;&, 测试代码, #!/bin/bashecho "Test No.1 ..."case "1" in 1) echo 1 ;;& 2) echo 2 ;; 3) echo 3 ;; ?) echo ? ;; *) echo * ;;esacecho "Test No.2 ..."case "1" in 1) echo 1 ;; 2) echo 2 ;;& 3) echo 3 ;; ?) echo ? ;; *) echo * ;;esacecho "Test No.3 ..."case "1" in 1) echo 1 ;& 2) echo 2 ;; 3) echo 3 ;; ?) echo ? ;; *) echo * ;;esacecho "Test No.4 ..."case "1" in 1) echo 1 ;; 2) echo 2 ;& 3) echo 3 ;; ?) echo ? ;; *) echo * ;;esac, 测试结果:, Test No.1 ...1?Test No.2 ...1Test No.3 ...12Test No.4 ...1,