Travis-ci regex on travis_tag尚未解决

时间:2017-03-16 19:24:16

标签: 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;

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

它也给了我二元运算符。

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

1 个答案:

答案 0 :(得分:5)

您不远,您的主要问题是~=不是通用测试运算符,而是bash特定运算符。 要使用这些bash高级测试运算符,您必须使用双括号

这将有效:

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

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

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