私は以下の文字列を持っています:deploy_tagとversion_number。Jenkinsの実行シェル内に文字列に特定の文字が含まれているかどうかをチェックする方法は?
deploy_tagは「2.8.6.1」または「origin/master」にすることができ、version_numberは「1.1.2.3」のようなドットで区切ってのみ数値で表すことができます。
私はそのような何かをしたい:
if [[ $deploy_tag == *["\/"+]* ]]; then deploy_tag=$version_number; fi
意味します。$ deploy_tagが含まれている場合は、「/」、それはversion_numberは$の値を持つ値です設定。
このシェルスクリプト全体は、Jenkinsジョブ内のシェル実行の一部です。
問題は、私の正規表現に何か問題があるようですが、私は何が見つかりません...あなたはできますか?
私はstackoverflowに関するいくつかの他の質問をチェックしましたが、私の正規表現で問題を見つけることができませんでした。
編集#1: はここにログを構築ジェンキンスからの例です:
[social-portal] $ /bin/sh -xe /tmp/hudson1162745529550311655.sh
+ [[ origin/master =~/]]
/tmp/hudson1162745529550311655.sh: 2: /tmp/hudson1162745529550311655.sh: [[: not found
+ echo deploy: origin/master
deploy: origin/master
+ echo version: 2.7.4
version: 2.7.4
+ mkdir output
そして、それは、(デバッグエコーさんを含む)問題を生成するコードです:
if [[ $DEPLOY_TAG =~/]]; then DEPLOY_TAG=$VERSION_NUMBER; fi
echo deploy: $DEPLOY_TAG
echo version: $VERSION_NUMBER