vers=`(autoconf --version) 2> /dev/null` && expr "$vers" : '[^
]* \([0-9][0-9.]*\).*'
和
vers=`(autoconf --version) 2> /dev/null` && expr "$vers" : '[^]* \([0-9][0-9.]*\).*'
请问上面两段代码的区别是什么呢?为何会输出不同的结果?
vers=`(autoconf --version) 2> /dev/null` && expr "$vers" : '[^
]* \([0-9][0-9.]*\).*'
和
vers=`(autoconf --version) 2> /dev/null` && expr "$vers" : '[^]* \([0-9][0-9.]*\).*'
请问上面两段代码的区别是什么呢?为何会输出不同的结果?
第二段正则是不是少了 \n
?
刚刚测试加\n对结果没影响。 代码片段1可以输出版本号,代码片段2无输出
换成 \r
试试。
#+BEGIN_SRC sh :results output
vers=`(autoconf --version) 2> /dev/null` && expr "$vers" : '[^\r]* \([0-9][0-9.]*\).*'
#+END_SRC
#+RESULTS:
: 2.71
嗯嗯,可以了,多谢解答!