Variable
破折號中的變數正則表達式測試?
我有很多可能的變數
[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
和類似的貝殼中。