我正在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
答案 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
变量被分配给包含空格的字符串。你应该引用这个表达式的右侧。