Tengo lo siguiente en un script
for server in ${servers[@]}; do
echo ${server}
ssh user@${server} "for i in /tmp/foo* ; do echo ${i}; done"
done
Pero no funciona. Cosa extraña, veo $ I cantidad de líneas de devolución. Entonces, si tengo diez archivos, veo diez líneas en blanco.
--sshlogin
opción de GNU Parallel .Respuestas:
Su shell local interpreta las
${i}
comillas dobles ("
), por lo que el comando funciona paraSimplemente use comillas simples (
'
) y su problema desaparecerá:fuente
Acabo de encontrarme con este problema un poco atrás, y la solución dada, si bien funciona, no es demasiado efectiva si también estás extrayendo variables del shell local, antes del ssh creas una matriz para iterar. Un poco más complicado sería escapar de los $ inicialmente, por lo que sería
"for i in /tmp/foo* ; do echo \${i}; done"
Lo cual se escaparía dentro de la construcción local, no del shell ssh llamado.
fuente
He actualizado la respuesta anterior para obtener puertos de una lista también.
fuente