2017-10-09 5 views
0

J'essaie d'augmenter les valeurs indx et eindx dans un ssh session.but aucune des commandes travaillent ..Évaluer et assigner des variables à l'intérieur de la session ssh dans le script shell

#!/bin/bash 
hosts=(#10.xx.xx.xx) 
PdidPrefix1=$1 
Runtime=$2 
indx=$3 
eindx=`expr $indx + $4` 
logfilename=$5 
for i in "${hosts[@]}" 
do 
echo $i 
ssh [email protected]$i << EOF 
for var in {1..4} 
do 
indx=`expr $eindx + 1` // not working 
eindx=$((indx+eindx)) // not working 
done 
EOF 
done 
exit 

essayé d'utiliser également laissé

let "indx = indx + 1" // ne fonctionne pas

Veuillez nous suggérer la meilleure façon de gérer les variables.

+0

Avez-vous essayé d'utiliser le sigle Heredoc (par exemple, «EOF») pour empêcher l'expansion de variables sur l'hôte local? –

+0

@ DavidC.Rankin..Tried 'EOF' erreur. – SuryaVeepuri

+0

Citer le sigil empêche à la fois l'extension * pathname * et * variable *. C'est un moyen standard d'empêcher les deux. Il semble que le problème que vous avez est que vous voulez que les variables soient développées localement et ensuite les résultats passent via ssh à l'hôte à '$ i'. Bien que cela ne soit pas la cause, en utilisant l'arithmétique '$ ((...))' est correcte, laissez 'expr a + b' dans le passé. Avez-vous essayé avec l'arithmétique $ ((...)) 'dans tous les cas où vous faites des maths? –

Répondre

1
#!/bin/bash 
hosts=(xx.10.20.30) 
PdidPrefix1=$1 
Runtime=$2 
indx=$3 
eindx=`expr $indx + $4` 
logfilename=$5 
for i in "${hosts[@]}" 
do 
echo $i 
ssh [email protected]$i "bash -s -- '$indx' '$eindx'" <<\EOF 

echo "In remote shell with parameters $1 $2..." 
indx=$1 
eindx=$2 

for ((var=1; var<=4; var++)) 
do 

indx=`expr $eindx + 1` 
eindx=$((indx+eindx)) 
echo "var=" $var " indx=" $indx " eindx=" $eindx 
done 
EOF 
done 
exit 
+0

Pas de chance.Si j'utilise \ EOF, la variable interne 'var' de la boucle de boucle n'est pas résolue.Si je supprime et essaie de s'exécuter, je peux voir dans debug, expr $ eindx + 1 est exécuté mais pas assigné à indx variable – SuryaVeepuri

+0

mon mauvais..bro..Sa travail ... j'ai copié une partie de l'extrait de code et essayant ... Merci ... – SuryaVeepuri

0

J'ai exécuté le même script. Et cela montre la bonne valeur.