Comment passer une variable locale à distance en utilisant le script ssh et bash?

ssh remotecluster 'bash -s' < export TEST="sdfsd" > echo $TEST > EOF 

Cela n’imprime rien.

De plus, cela ne fonctionne toujours pas même si je stocke la variable dans un fichier et la copie sur une télécommande.

 TEST="sdfsdf" echo $TEST > temp.par scp temp.par remotecluster ssh remotecluster 'bash -s' < export test2=`cat temp.par` > echo $test2 > EOF 

N’imprime toujours rien.

Donc, ma question est de savoir comment passer une variable locale à la machine distante en tant que variable?

Des réponses ont été données dans ce

L’atsortingbution de variable TEST="sdfsd" donnée dans le document ici n’est pas une affectation de variable réelle, c’est-à-dire que l’atsortingbution de la variable ne sera pas effectuée directement dans la déclaration / définition du document ici (mais plus tard ).

De plus, la variable $TEST contenue dans un document non échappé ou non cité sera développée par le shell local avant que le shell local n’exécute la commande ssh . Le résultat est que $TEST sera résolu dans la chaîne vide s’il n’est pas défini dans le shell local avant la commande ssh ou le document ici respectivement.

En conséquence, l’ export TEST="sdfsd" assignation de variable export TEST="sdfsd" dans le document ici ne prendra pas effet dans le shell local, mais sera d’abord envoyé au shell de l’hôte distant et il ne sera étendu que par conséquent.

La solution consiste à utiliser un document échappé ou entre guillemets simples, <<\EOF ou <<'EOF' ; ou seulement échapper à la variable \$TEST dans le document ici; ou définissez simplement la variable $TEST avant la commande ssh (et ici le document).

 # prints sdfsd export TEST="sdfsd" ssh localhost 'bash -s' << EOF echo $TEST EOF # prints sdfsd ssh localhost 'bash -s' << EOF export TEST="sdfsd" echo \$TEST EOF # prints sdfsd ssh localhost 'bash -s' <<'EOF' export TEST="sdfsd" echo $TEST EOF 

Exporter la variable, ssh envoie les variables (d’environnement) exscopes à l’export du serveur VAR = teste ssh -v 127.0.0.1 echo $ VAR teste les commandes ci-dessus et voit le résultat