2017-03-16 2 views
5

나는 travis 세그먼트에서 cassadra_version env 변수를 확인합니다.travis_tag의 travis-ci regex가 해결되지 않습니다

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

또한 오류를 나에게 제공하는 이항 연산자 오류를 제공합니다 :

이 나는 ​​노력했다.

나는 또한 다음과 같이 나타냈다 : [$ {TRAVIS_TAG} = ~ '^ ((?! deploy). * $']; ./setup-cassandra.sh; fi;`

또한 이진 연산자를 제공합니다.

저는 정규식을 올바르게 수행하지 않습니까?

답변

5

아직 멀었습니다. 가장 중요한 문제는 ~=은 일반적인 테스트 운영자가 아니지만 bash 특정 문제입니다. 고급 시험 연산자 bash을 사용하려면 두 개의 대괄호을 사용해야합니다.

이 작동합니다 :

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

글쎄, 당신의 정규 표현식이 올바른지,

그 개선 사업자에 대해 자세히 알려면) : http://mywiki.wooledge.org/BashFAQ/031

+0

가 말하는됩니다 : [[: 명령 찾지 못했습니다 – azngunit81

+1

내 잘못! ** Bash ** (그리고 그게 실망 스럽습니다.) 공백에 매우 민감합니다 ... 대괄호를 넣으려는 내 대답에 특별한 효과를 주려고했습니다 ... 그러나 괄호와 텍스트 복사/붙여 넣기 살아남지 못할 것입니다 ... 내 대답을 편집했습니다, 이제 당신은 그 라인을 복사 할 수 있어야합니다. – arvymetal