J'ai un heredoc qui doit appeler les variables existantes du script principal, et définir ses propres variables à utiliser plus tard. Quelque chose comme ceci:Comment définir ET développer des variables dans une section heredoc
count=0
ssh $other_host <<ENDSSH
if [[ "${count}" == "0" ]]; then
output="string1"
else
output="string2"
fi
echo output
ENDSSH
Cela ne fonctionne pas parce que «sortie» ne se règle sur rien.
J'ai essayé d'utiliser la solution de cette question:
count=0
ssh $other_host << \ENDSSH
if [[ "${count}" == "0" ]]; then
output="string1"
else
output="string2"
fi
echo output
ENDSSH
Il ne fonctionne pas non plus. $ output a la valeur "string2" car $ count n'a pas été développé.
Comment puis-je utiliser un heredoc qui développe des variables du script parent, et définit ses propres variables?
Il se comporte comme prévu. Le code dans heredoc s'exécute sur un hôte distant et ne voit pas l'initialisation 'count = 0'. – codeforester
Existe-t-il un moyen de passer la variable (et quelques autres) dans l'exécution d'heredoc? – user2824889
Il n'y a pas "d'exécution heredoc". L'hérédoc définit une chaîne. La chaîne est passée à ssh, où elle est évaluée par le shell. –