Variable

破折號中的變數正則表達式測試?

  • September 28, 2020

我有很多可能的變數[a-z][0-9],例如 1 個字母和 1 個數字。有沒有辦法在破折號中測試它們?就像是:

myvar=o7
if [ $myvar=o[0-4] ]; then 
"do this"
elif [ $myvar=o[5-7] ]; then
"do that"
fi

提前謝謝:)

你不需要正則表達式來做你想做的事情:

case $myvar in
   o[0-4])
       echo 'do this'
       ;;
   o[5-7])
       echo 'do that'
       ;;
   *)
       echo 'unsupported case'
esac

或者,更緊湊地,

case $myvar in
   o[0-4]) echo 'do this' ;;
   o[5-7]) echo 'do that' ;;
   *)      echo 'unsupported case'
esac

在這裡,該值$myvar依次與每個給定的 case 標籤匹配,並且將執行與第一個匹配的標籤對應的程式碼。將;;標籤的程式碼與下一個標籤分隔開(這意味著最後一個標籤不需要 ;;在末尾之前esac)。

每個標籤都是表單上的萬用字元pattern)or (pattern),而不是正則表達式。

case...esac結構提供了一種標準且緊湊的方式來做一些事情,也可以寫成

if [[ $myvar == o[0-4] ]]; then
   echo 'do this'
elif [[ $myvar == o[5-7] ]]; then
   echo 'do that'
else
   echo 'unsupported case'
fi

bash和類似的貝殼中。

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