Classic Shell Scripting 讀書筆記 (八)
ksh 與 bash 的擴展與相容性
模式匹配的擴展
bash 要先啟用 extglob 選項才支援此功能
正則的 ^
與 $
在 Shell 的模式匹配沒有等同物,我們可以想像,在 Shell 的模式匹配中, ^
與 $
已經自動帶在前後文了,若在模式前後加上 *
則可以停用此功能
1 2 3 4 5 6 7 8 |
$ ls biff bob frederick shishkabob $ shopt -s extglob # 啟用 bash 的模式匹配 $ echo @(dave|fred|bob) bob $ echo *@(dave|fred|bob)* # 停用隱含的 ^ 與 $ 前後文 bob frederick shishkabob |
括弧展開
源自於 csh 的功能,ksh 跟 bash 都支持此用法,可以巢狀化
1 2 3 |
$ echo cpp-{args,l{e,o}x,parse}.c cpp-args.c cpp-lex.c cpp-lox.c cpp-parse.c |