运行env
返回"Clear Workspace = true".如何在bash中访问它?仅供参考,它来自Jenkins参数化构建参数名称.${Clear Workspace}
似乎不起作用.
另外,Jenkins甚至能够创建这个环境变量?Clear Workspace=true
在bash中运行显然不起作用,因为它尝试运行带有"Workspace = true"参数的"Clear"命令.
我当然可以创建作业参数名称Clear_Workspace,但它以表单形式呈现给用户,所以我宁愿不这样做.此外,Jenkins的Maven Build Plugin有几个带空格的参数名称,因此必须以某种方式访问它们.
您可以使用该env
命令模拟这一点乐趣
env Clear\ Workspace=true bash
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个具有环境变量集的shell.
一种让环境变量值退出的hacky方法是:
declare -p Clear\ Workspace | sed -e "s/^declare -x Clear Workspace=\"//;s/\"$//"
Run Code Online (Sandbox Code Playgroud)
除此之外,您需要使用本机代码程序或脚本语言来实现它,例如
ruby -e "puts ENV['Clear Workspace']"
Run Code Online (Sandbox Code Playgroud)
哪个不那么hacky ......如果你没有红宝石
perl -e 'print "$ENV{\"Clear Workspace\"}\n";'
Run Code Online (Sandbox Code Playgroud)
也
python -c 'import os; print os.environ["Clear Workspace"]'
Run Code Online (Sandbox Code Playgroud)
这是一个本机代码版本:
#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;
}
Run Code Online (Sandbox Code Playgroud)