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
新聞熱點
疑難解答