我想在我的 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