【发布时间】: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 在远程环境中进行评估,而不是在本地环境中。