Travis-ci regex on travis_tag尚未解决

azn*_*t81 4 travis-ci

我有一段travis,它检查cassadra_version env变量.

if [ ! -z ${CASSANDRA_VERSION} ]; then ./setup-cassandra.sh; fi;

我想只有在没有名为deploy的标签的情况下才能运行.

我试过了: if [ ! -z ${CASSANDRA_VERSION} ] && [ "${TRAVIS_TAG}" =~ '^((?!deploy).)*$' ]; then ./setup-cassandra.sh; fi;

但它给我一个二元运算符错误

if [ [! -z ${CASSANDRA_VERSION} ] && [ "${TRAVIS_TAG}" =~ '^((?!deploy).)*$' ]]; then ./setup-cassandra.sh; fi;

也给了我一个错误

if [ [! -z ${CASSANDRA_VERSION} ] && [ ${TRAVIS_TAG} =~ '^((?!deploy).)*$' ]]; then ./setup-cassandra.sh; fi;

也.

然后我也尝试过:if [$ {TRAVIS_TAG} =〜'^((?!deploy).)*$']; 然后./setup-cassandra.sh; 网络连接;`

它还给了我二元运算符.

我没有正确地做正则表达式吗?

arv*_*tal 5

你不远,你的主要问题是它~=不是一个通用的测试操作符,而是一个bash特定的操作符.要使用这些bash高级测试操作符,必须使用双括号.

这将有效:

if [ ! -z ${CASSANDRA_VERSION} ] && [[ "${TRAVIS_TAG}" =~ ^((?!deploy).)*$ ]]; then ./setup-cassandra.sh; fi;

好吧,如果你的正则表达式是正确的;)

要了解有关这些改进运营商的更多信息,请访问:http://mywiki.wooledge.org/BashFAQ/031