[英]Bash regex with hyphen and dot
我正在嘗試將主機名與正則表達式匹配。 由於某種原因,以下代碼失敗。
#!/bin/bash
CONFIGURATION=m1si-ngxi-ddb01
#check configuration format
TMP_CONFIGURATION=",${CONFIGURATION}"
re=',[a-zA-Z0-9\-_\.]+'
if ! [[ $TMP_CONFIGURATION =~ $re ]]
then
echo "configuration parttern mismatch."
exit 1
fi
測試:
[oracle@m1s-nyyy-db01 nir]$ vi a.sh
[oracle@m1s-nyyy-db01 nir]$
由於“轉義”字符以及-
不在括號表達式的末尾/開頭,您擁有的模式失敗。 \\
始終被視為括號表達式內的文字反斜杠,它們不形成任何轉義序列。 連字符很棘手,請參閱9.3.5 RE 括號表達式,第 7 點:
如果
<hyphen-minus>
字符在列表中最先出現(如果有的話,在初始的 '^' 之后)或最后出現,或者作為范圍表達式中的結束范圍點,則應將其視為自身。
采用
CONFIGURATION=m1si-ngxi-ddb01
#check configuration format
TMP_CONFIGURATION=",$CONFIGURATION"
re=',[a-zA-Z0-9_.-]+'
if ! [[ $TMP_CONFIGURATION =~ $re ]]
then
echo "configuration parttern mismatch."
exit 1
fi
請參閱在線演示。 請注意,無需將CONFIGURATION
放在花括號內, $CONFIGURATION
= ${CONFIGURATION}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.