Groovy Jenkins 脚本中的 sh 命令
Posted
技术标签:
【中文标题】Groovy Jenkins 脚本中的 sh 命令【英文标题】:Sh command inside Groovy Jenkins script 【发布时间】:2019-01-23 22:18:00 【问题描述】:我有创建link.txt 文件的shell 脚本。 在某些服务器中创建的 link.txt 文件(我们称之为“jacoco 服务器”)。
现在,在 Jenkins 管道作业中的 Groovy 脚本中, 我试图通过以下方式在对服务器执行 ssh 时获取此文件内容:
sh "/usr/bin/sshpass -p passJac1 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $JACOCO_URL \"link=cat $WORKING_DIR/jacoco_link/link.txt\""
请忽略其余所有内容,并专注于这一行:
link=cat $WORKING_DIR/jacoco_link/link.txt\
我已经尝试了几个选项来获取 link.txt 内容并将其保存在链接变量中,但是管道作业失败并出现不同的语法错误。
我也通过以下命令尝试过
link=$(<$WORKING_DIR/jacoco_link/link.txt)
但管道作业再次失败(“无法接受获取
请指教
【问题讨论】:
嗨,如果我错了,请纠正我。你一定想要link=$(cat $WORKING_DIR/jacoco_link/link.txt)
,不是吗?
Yuiry,谢谢你的建议,但是非常喜欢它,并使用以下消息将其标记为错误的语法:“美元符号后的非法字符串主体字符;解决方案:要么转义文字美元符号” \$5" 或将值表达式 "$5" 括起来。
伊莱,我明白了。我的第二个猜测是 $WORKING_DIR 是在本地机器上评估的,而远程机器上不存在该路径。如果我是你,我会尝试手动指定 link.txt 的正确完整路径。如果这有帮助,我会找到一种方法让 $WORKING_DIR 在远程环境中进行评估,而不是在本地环境中。
【参考方案1】:
我相信你需要的是
link=`cat $WORKING_DIR/whatever`
带有反引号。您不希望自己的喜好成为“随便什么”,而是执行该操作的结果。
【讨论】:
以上是关于Groovy Jenkins 脚本中的 sh 命令的主要内容,如果未能解决你的问题,请参考以下文章