J'ai ce qui suit dans un script
for server in ${servers[@]}; do
echo ${server}
ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done"
done
Mais ça ne marche pas. Chose bizarre, je vois $ I montant de lignes de retour. Donc, si j'ai dix fichiers, je vois dix lignes vides.
--sshlogin
option de GNU Parallel .Réponses:
Votre shell local interprète les
${i}
guillemets doubles ("
), de sorte que la commande fonctionne pourUtilisez simplement des guillemets simples (
'
) à la place et votre problème disparaîtra:la source
Je suis juste tombé sur ce problème un peu en arrière, et la solution donnée, même si cela fonctionne, n'est pas trop efficace si vous extrayez également des variables du shell local, avant le ssh, vous créez un tableau pour itérer. Un peu plus compliqué serait d'échapper au $ au départ, donc ce serait
"for i in /tmp/foo* ; do echo \${i}; done"
Ce qui lui échapperait dans la construction locale, pas le shell ssh appelé.
la source
J'ai également mis à jour la réponse ci-dessus pour obtenir des ports à partir d'une liste.
la source