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...