linux - 当通过 ssh 在远程机器上从 Jenkins 执行命令时,如何将输出存储在变量中?

标签 linux shell jenkins

我正在尝试对 VM 执行 ssh 并获取文件夹的文件列表,将结果存储在 Jenkins execute shell 中的变量中

*sshpass -p password ssh -T -o "StrictHostKeyChecking no" user@SERVER << ENDHERE

cd /some/folder/

folder=$(ls -l) 

echo $folder

ENDHERE*

echo $folder 是空白的,但如果我直接在执行 shell 上执行 ls -l,它会在 Jenkins 控制台中显示列表,而不会存储在 $folder 中

请帮忙。

最佳答案

您的此处文档就像一个双引号字符串; $(ls -l)$folder内容被用作远程主机上的脚本之前进行评估。引用分隔符以将其视为单引号字符串。

... << 'ENDHERE'
cd /some/folder
folder=$(ls -l)
echo "$folder"
ENDHERE

关于linux - 当通过 ssh 在远程机器上从 Jenkins 执行命令时,如何将输出存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54486451/

相关文章:

jenkins - 如何在下游作业中读取上游作业发送的参数?

git - 在沙盒模式的 DSL 中调用 PathRestriction

git - 我如何让 Jenkins 在推送到 BitBucket git 存储库的基础上构建?

linux - 在 bash 脚本中验证输入

linux - 从本地 Windows PC 和 Linux 传输数据

linux - 如何使用 Bash 文件中列表中的变量处理文件名

linux - wget 打破内容处置

java - Runtime.getRuntime.exec ("who am i") 没有给出预期的结果

linux - 从当前终端在新终端中运行 shell 脚本

linux - 在 shell 脚本中向 AWS SNS 消息添加换行符