web-dev-qa-db-ja.com

Jenkins Shellビルドステップでコマンド結果を変数に保存する方法

このスクリプトをJenkinsジョブ内で実行したいと思います。私の目標は、猫の出力を変数に保存して、どこかで使用できるようにすることです。

_#!/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コマンドの実行を待機するようにスクリプトに指示するにはどうすればよいですか?

3
skymedium

単一引用符を使用すると、コマンドは機能します。

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
1