我有一段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;网络连接;`
它也给了我二元运算符。
我没有正确地进行正则表达式吗?
答案 0 :(得分:5)
您不远,您的主要问题是~=
不是通用测试运算符,而是bash
特定运算符。
要使用这些bash
高级测试运算符,您必须使用双括号。
这将有效:
if [ ! -z ${CASSANDRA_VERSION} ] && [[ "${TRAVIS_TAG}" =~ ^((?!deploy).)*$ ]]; then ./setup-cassandra.sh; fi;
好吧,如果你的正则表达式是正确的;)
要了解有关这些改进的运营商的更多信息:http://mywiki.wooledge.org/BashFAQ/031