if [[ 23ab = *ab ]] ; then echo yes; fi
瞭解之間的差=和=〜運營商在bash [[]]是對上面的代碼正則表達式?
請參閱以下內容:
if [[ 23ab =~ [0-9]{1,2}ab ]] ; then echo yes; fi
因此,這行是一個正則表達式?如果第一行不是正則表達式,爲什麼當我們使用*時會起作用? 如果是,但是當我們使用=
而不是=~
時,如 if [[ 23ab = [0-9]{1,2}ab ]]
,它現在不起作用。
你能解釋兩條線的區別嗎?
我假設你在問這裏「bash」有幾種不同的shell可以在Linux上運行,最好清楚一下你問的是哪一個。 (POSIX sh不支持'[[]]',所以它顯然不是一個純粹的POSIX shell,比如ash或dash ...但理論上你可以問ksh或者zsh或其他的) 。 –
爲簡單起見,您可以使用以下語法:'[[23ab = * ab]] && echo「yes」' –