Shell-Script
如何在 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
我可以在終端控制台中成功執行相同的命令。由於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