Shell-Script

如何在 Jenkins shell 建構步驟中將命令結果保存在變數中

  • August 26, 2019

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

我可以在終端控制台中成功執行相同的命令。由於https://stackoverflow.com/a/34074453/4565322 ,我認為該命令$(cat /path/myfile.txt)是在與遠端伺服器的連接啟動之前執行的。還有“開始”。在錯誤消息之後列印,儘管它應該出現在錯誤消息之前。

如何告訴我的腳本等待執行 cat 命令,直到伺服器連接建立?

使用單引號,該命令有效:

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

引用自:https://unix.stackexchange.com/questions/537514