Affectation de la valeur d’une variable distante à une variable locale dans unix / linux

Je crée une variable distante dont je souhaite atsortingbuer la valeur à une variable locale sous Unix. Voici le code #! / Bin / bash

INPUT= "test" ssh [email protected] "if [ -s $INPUT ]; then date=\`date\` remote= $INPUT.date $INPUT= \$remote else mkdir $INPUT fi" 

Fondamentalement, j’affecte une valeur à une variable locale. Sur ssh vers un serveur distant, je vérifie si un répertoire non vide nommé “test” existe. Si c’est le cas, j’ajoute un horodatage à la variable locale $ INPUT. Le code fonctionne bien jusqu’à la ligne 8 “remote = $ INPUT.date”. Mais l’affectation de la variable distante \ $ remote à la variable locale $ INPUT ne l’est pas. Qu’est-ce que je fais mal. Merci pour l’aide.

Comme Rup l’a dit, le shell distant ne peut pas définir vos variables de shell locales. Vous devez capturer la variable distante en l’imprimant et en utilisant la substitution de commande. Cette commande SSH fera ce que vous essayez de faire, puis elle fera écho à la valeur modifiée que vous souhaitez stocker dans $ INPUT:

 INPUT="test" ssh user@remotehost "if [ -s $INPUT ]; then timestamp=\$(date) echo "${INPUT}.\${timestamp}" fi" 

Sortie:

 test.Monday, 24 February 2014 11:26:41 GMT 

Si vous voulez que $ INPUT soit modifié, vous devez alors utiliser toute la commande SSH comme substitution de commande:

 INPUT="test" INPUT=$(ssh user@remotehost "if [ -s $INPUT ]; then timestamp=\$(date) echo "${INPUT}.\${timestamp}" fi") 

Sortie:

 $> echo $INPUT test.Monday, 24 February 2014 11:27:47 GMT 

De même, si vous souhaitez stocker une variable dans un fichier txt, cela la stockera sur l’hôte distant:

 ssh user@remotehost "echo \$remote > file.txt" 

Cela va le stocker localement:

 ssh user@remotehost "echo \$remote" > file.txt