Lga*_*n90 5 shell substring jenkins jenkins-pipeline
我在管道脚本中的语法有麻烦。
我正在尝试捕获最后一个斜杠“ /”之后和最后一个句号“”之前的所有内容。在此字符串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
Run Code Online (Sandbox Code Playgroud)
我目前在管道脚本上设置了三重引号:
stage('Git Clone') {
MYVAR="$GIT_REPO"
echo "$MYVAR"
NAME="""${MYVAR%.*}"""
echo "$NAME"
Run Code Online (Sandbox Code Playgroud)
但是我收到一个关于“”的意外令牌。错误。我该怎么写才能使它正常工作?
更新:此命令可以解决问题:
echo "git@github.com:project/access-server-pd.git" | sed 's#.*/\([^.]*\).*#\1#'
Run Code Online (Sandbox Code Playgroud)
现在,我只需要找到适当的语法来创建一个变量来存储该值。
在这种情况下,看起来像可以使用一些Groovy / Java方法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
Run Code Online (Sandbox Code Playgroud)
这使用了几种不同的方法:
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
)。
String
在管道代码中执行操纵是完全合理的,因为您可能会做出决策并根据其更改业务流程。
归档时间: |
|
查看次数: |
10229 次 |
最近记录: |