このスクリプトを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コマンドの実行を待機するようにスクリプトに指示するにはどうすればよいですか?
単一引用符を使用すると、コマンドは機能します。
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