Jenkinsシェルのビルドフェーズでコマンドの結果を変数に保存する方法

Jenkinsシェルのビルドフェーズでコマンドの結果を変数に保存する方法

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

おすすめ記事