Q
不熟悉語法
4
A
回答
2
這使用規則在模式說明匹配的man bash
部分:
[[ $OSTYPE == *@(darwin|freebsd|solaris|cygwin|openbsd)* ]]
這使用正則表達式來執行匹配:
[[ $OSTYPE =~ (darwin|freebsd|solaris|cygwin|openbsd) ]]
這些是非常不同的機制,具有不同的性能影響。值darwin
,freebsd
,...中沒有模式,這些是簡單的文字字符串。 @(...)
語法對於這種更簡單的匹配邏輯來說是完美的,所以使用正則表達式看起來有點過分。
在這個例子中,兩種書寫風格都給出相同的行爲,只是它們通過不同的機制來執行匹配。如果不是像darwin
,freebsd
,......這樣的文字字符串列表,您有更復雜的正則表達式模式,那麼第一個寫作風格將不是一個選項,您將需要使用具有完整正則表達式的第二個版本。
此語法是否用於代替
=~
運算符,以便使用正則表達式實現更好的可移植性?
它被使用,因爲它是足夠好的目的,正則表達式不需要。
3
搜索man bash
的extglob
選項:
如果
extglob
外殼選項使用shopt
內置啓用,幾個擴展模式匹配運營商的認可。在 下面的描述中,模式列表是由|
分隔的一個或多個模式的列表。複合模式可以使用以下子圖案中的一個或多個來形成 :?(pattern-list) Matches zero or one occurrence of the given patterns *(pattern-list) Matches zero or more occurrences of the given patterns +(pattern-list) Matches one or more occurrences of the given patterns @(pattern-list) Matches one of the given patterns !(pattern-list) Matches anything except one of the given patterns
相關問題
- 1. SQL語句中不熟悉的字符
- 2. 熟悉XAMPP
- 3. 使用不熟悉的java語法的Sudoku算法
- 4. IllegalThreadStateException?不熟悉線程
- 5. 不熟悉這種JavaScript語法,我碰到過
- 6. 在x86彙編中的「imul」指令的不熟悉的語法
- 7. 熟悉Visual Studio 2010
- 8. 讓自己熟悉項目
- 9. 不熟悉C++指針,需要幫助
- 10. 不熟悉的語法初始化數組/結構,尋找解釋
- 11. 任何熟悉微軟語音識別API的人?
- 12. 任何熟悉PHP源代碼的人?
- 13. R:算我比較熟悉Python出現
- 14. 面試問題:您是否熟悉linux?
- 15. 逐漸熟悉新的代碼庫
- 16. 是否有人熟悉Bamboo Sharepoint產品?
- 17. 是否有人熟悉TEXT.IX文件?
- 18. Ipad新手,熟悉SQL,如何開始
- 19. 有沒有人熟悉Plurk API?
- 20. 什麼是有效的方法來(重新)熟悉一門語言?
- 21. 不熟悉的調用方括號內的函數
- 22. 不熟悉的代碼段/ \ B [AZ]/g的
- 23. PHP文件進行編輯,但不熟悉PHP
- 24. 對建模行爲/概念不熟悉的建議
- 25. 試圖在不熟悉域的情況下使用TDD
- 26. 不熟悉的jQuery上下文選擇器?
- 27. 不熟悉結構/類的聲明與模板
- 28. 在bash腳本中不熟悉的引用約定
- 29. 任何熟悉整合UPS Worldship的人士?
- 30. 程序員可以熟悉多少代碼?
可能的重複:[如何在unix/linux shell中進行模式匹配時使用反向或負向通配符?](http://stackoverflow.com/a/217208/3776858) – Cyrus
@Cyrus我的問題是'爲什麼使用這種語法'比'如何得到結果'。 – SLePort
謝謝@choroba。因此,與「COMP_TYPE」無關,也沒有列表完成...上面的例子是從bash完成代碼中提取的,這對我造成了困惑。 – SLePort