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”' –