运行env将返回“ Clear Workspace = true”。如何在bash中访问它?仅供参考,它来自Jenkins Parameterized Build参数名称。${Clear Workspace}似乎不起作用。
env
${Clear Workspace}
而且,詹金斯怎么能创建这个环境变量?Clear Workspace=true在bash中运行显然不起作用,因为它尝试使用参数“ Workspace = true”运行“ Clear”命令。
Clear Workspace=true
我当然可以将作业参数名称设置为Clear_Workspace,但是它以一种形式呈现给用户,所以我宁愿不这样做。另外,用于Jenkins的Maven Build插件具有多个参数名称,其中包含空格,因此必须可以通过某种方式访问它们。
您可以使用以下env命令来模拟这种乐趣
env Clear\ Workspace=true bash
这将为您提供一个设置了环境变量的shell。
一种获取环境变量值的怪异方法是:
declare -p Clear\ Workspace | sed -e "s/^declare -x Clear Workspace=\"//;s/\"$//"
除此之外,您还需要使用本机代码程序或脚本语言将其提取出来,例如
ruby -e "puts ENV['Clear Workspace']"
如果您没有红宝石,那么它的hacky要少得多。
perl -e 'print "$ENV{\"Clear Workspace\"}\n";'
也
python -c 'import os; print os.environ["Clear Workspace"]'
这是本机代码版本:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv, char **envp) { char **env; char *target; int len; if (argc != 2) { printf("Syntax: %s name\n", argv[0]); return 2; } len = strlen(argv[1]); target = calloc(len+2,sizeof(char)); strncpy(target,argv[1],len+2); target[len++] = '='; target[len] = '0'; for (env = envp; *env != 0; env++) { char *thisEnv = *env; if (strncmp(thisEnv,target,len)==0) { printf("%s\n",thisEnv+len); return 0; } } return 1; }