Shell 條件表示式的正則匹配

2021-10-24 05:39:22 字數 712 閱讀 2431

shell 程式設計中,我們可以使用雙中括號運算子 和 =~ 來判斷字串是否匹配給定的正規表示式,例如匹配以 lvlv 結尾的字串:

filelist=

"lvlvcheck dablelvlv checklvlv"

forfile

in$filelist

doif[[

$file

=~ lvlv$ ]

]then

echo

$file

fidone

指令碼執行輸出:

dablelvlv 

checklvlv

注意事項:if [[ fil

e=lv

lv

file =~ lvlv

file=l

vlv ]] 中注意有五個空格,而且正規表示式不能使用單引號或者雙引號,否則會被當做普通字串。

這裡要吐槽一下,shell 真的很強大,但是語法又過於苛刻晦澀,少乙個空格有時都能讓人抓狂,所以書寫時要多加留意,嚴格遵循 shell 語法要求。

如果想使 shell if 不匹配指定的正規表示式,可以使用 shell 的邏輯非運算子感嘆號!,同時還是要注意新增5個空格,示例如下:

if[[

!$file

=~ check$ ]

]

shell 條件表示式test

一 條件測試 測試語句 在bash的各種流程控制結構中通常要進行各種測試,然後根據測試結果執行不同的操作,有時也會通過與if等條件語句相結合,讓我們可以方便的完成判斷。格式1 test 測試表示式 格式2 條件表示式 格式3 條件表示式 說明 格式1和格式2是等價的。格式3為擴充套件的test命令,...

shell中的條件表示式

by francis hao oct 1,2017 本文摘錄自bash的man手冊 條件表示式是由復合命令 或內建命令 test 和 使用的,用於測試檔案屬性和字串或數值比較。表示式形式如下表所示,如果其中的file形式為 dev fd n,那麼將測試檔案描述符n,如果file是 dev stdin...

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...