如何在 Jenkins shell 构建步骤中将命令结果保存在变量中

如何在 Jenkins shell 构建步骤中将命令结果保存在变量中

我想在我的 Jenkins 工作中运行这个脚本。我的目标是将 cat 输出保存到一个变量中,以便我可以在其他地方使用它。

#!/bin/bash
ssh myserver.com  <<EOF
echo "Start."
CYCLE=$(cat /path/myfile.txt)
echo $CYCLE
...
echo "End."
exit
EOF

我在 Jenkins 日志中收到以下错误: cat: /path/myfile.txt: No such file or directory

我可以在终端控制台中成功运行相同的命令。我认为该命令$(cat /path/myfile.txt)是在与远程服务器的连接建立之前执行的,因为https://stackoverflow.com/a/34074453/4565322。还有“开始”。尽管它应该出现在错误消息之前,但它是在错误消息之后打印的。

如何告诉我的脚本等待执行 cat 命令,直到服务器连接建立?

答案1

使用单引号该命令有效:

ssh yourserver 'echo "Start.";CYCLE=$(cat /your/file); echo $CYCLE; echo "End."'

ssh yourserver  <<'EOF'
echo "Start."
CYCLE="$(cat /your/file)"
echo $CYCLE
echo "End."
EOF

相关内容