Bash
如何在 bash 案例語句中的字元串模式(空格分隔的單詞)中使用“joker”或萬用字元?
如何將 bash 的“case”語句用於“非常具體”的字元串模式(多個單詞,包括空格)?
問題是:我從一個非常具體的函式收到一個多字字元串,包括一個版本號。版本號現在不時更改。我不想在我的 case 語句中添加越來越多的特定字元串模式,而是想使用一個小丑(或者任何這個詞,比如 “Ubuntu 16.04.? LTS” 或 “Ubuntu 16.04.* LTS” 。但是,我還沒有找到任何解決方案。
查看我目前使用的這個 shell 腳本:
. . . case "${OS}" in "SUSE Linux Enterprise Server 11 SP4") echo "SLES11 detected." ;; "Ubuntu 16.04.3 LTS" | "Ubuntu 16.04.4 LTS" ) echo "UBUNTU16 detected." ;; "CentOS Linux 7 (Core)") echo "CENTOS7 detected." ;; *) echo "Unknown OS detected. Quitting for safety reasons." exit -1 ;; . . .
您可以在 case 語句中使用模式,但不能引用它們,因此您必須轉義空格。
case ${OS} in "SUSE Linux Enterprise Server 11 SP4") echo "SLES11 detected." ;; Ubuntu\ 16.04.[3-4]\ LTS) echo "UBUNTU16 detected." ;; "CentOS Linux 7 (Core)") echo "CENTOS7 detected." ;; *) echo "Unknown OS detected. Quitting for safety reasons." exit -1 ;;