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