Jenkins将双引号读作单引号,导致模糊的重定向错误

时间:2015-12-10 22:22:59

标签: bash jenkins

我正在Jenkins创建我的第一份工作,而对于Execute shell命令,我有以下内容:

C:/project/script.sh "Execute script" flag1 flag2 - -

构建失败。当我查看控制台输出时,我看到了

+ C:/projects/script.sh 'Executing build script' flag1 flag2 - -
C:/projects/script.sh: line 29: $LOGFILE: ambiguous redirect

我认为模糊重定向是因为Jenkins正在将双引号转换为单引号。原始命令在jenkins之外正常工作。

有没有办法让Jenkins使用双引号,如脚本所期望的那样? 我在Windows Server 2012上使用jenkins-1.641

script.sh看起来像这样:

line 20 #include file
line 21 if [ "$parameterFile" != "" ] 
line 22   then source $parameterFile ; else source $CURRENT_DIR/scripts/parameter.sh
line 23 fi 
line 24 source $SCRIPT_FOLDER/functions.sh
line 25 source $SCRIPT_FOLDER/mailfunctions.sh
line 26
line 27 #file to save the log
line 28 export LOGFILE=$(pwd)/${PROJECT_NAME}_build_$(date "+%Y-%m-%d_%H%M%S").log
line 29 echo > $LOGFILE
line 30 echo > $LOG_FILE_REPO

1 个答案:

答案 0 :(得分:1)

引号

根据来自@ glenn-jackman的评论,Jenkins没有对你的引号做任何事情,例如将double改为single - 你看到了set -x的输出。在你的shell中试试这个:

set -x
ls "some string with spaces"

输出类似于:

+ ls --color=auto 'some string with spaces'

bash只是向您展示其解释和命令标记化的调试输出。

模糊重定向

您的PROJECT_NAME变量被分配给包含空格的字符串。你应该引用这个表达式的右侧。