Bash

如何在 bash 案例語句中的字元串模式(空格分隔的單詞)中使用“joker”或萬用字元?

  • July 2, 2018

如何將 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
   ;;

引用自:https://unix.stackexchange.com/questions/435287