我在管道脚本中的语法有些麻烦。
我正在尝试捕获最后一个斜杠“/”之后和最后一个句号“”之前的所有内容。在此字符串git@github.com:project / access-server-pd.git(access-server-pd)
这是我下面要设置的方式
MYVAR="git@github.com:project/access-server-pd.git" NAME=${MYVAR%.*} # retain the part before the colon NAME=${NAME##*/} # retain the part after the last slash echo $NAME
我目前在管道脚本上设置了三引号:
stage('Git Clone') { MYVAR="$GIT_REPO" echo "$MYVAR" NAME="""${MYVAR%.*}""" echo "$NAME"
但是我收到一个关于“”的意外令牌。错误。我该怎么写才能使它正常工作?
更新:此命令可以解决问题:
echo "git@github.com:project/access-server-pd.git" | sed 's#.*/\([^.]*\).*#\1#'
现在,我只需要找到适当的语法来创建一个变量来存储该值。
在这种情况下,看起来可以使用一些Groovy / Java方法String提取零件。
String
final beforeColon = url.substring(0, url.indexOf(':')) // git@github.com final afterLastSlash = url.substring(url.lastIndexOf('/') + 1, url.length()) // project/access-server-pd.git
这使用了几种不同的方法:
public int String.indexOf(String str, int fromIndex)
public String String.substring(int beginIndex, int endIndex)
public int String.length()
public int String.lastIndexOf(String str)
您确实需要注意在管道中使用的代码。如果是沙盒,它将在受保护的域中运行,在该域中,所有调用都经过安全检查。例如,在白名单中的 脚本安全插件 白名单的所有上面使用(例如,电话method java.lang.String lastIndexOf java.lang.String)。
method java.lang.String lastIndexOf java.lang.String
String在管道代码中执行操纵是完全合理的,因为您可能会做出决策并根据其更改编排。