
Tengo este código:
HOSTS="host1 host2"
For hostname in ${HOSTS} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
HOSTSN="test"
echo ${HOSTSN}
exit
EOF
Done
La variable HOSTSN
está vacía, ¿puedes decirme por qué?
Respuesta1
HOSTSN está vacío porque se está evaluando en el momento del
do ssh -tt ${USERNAME}@${hostname} << EOF
ejecución. Usarlo echo \${HOSTSN}
en su lugar lo solucionará.
Considere este ejemplo. Aquí se crea un archivo 'foo'. Los contenidos no se ejecutan en el momento de la creación del archivo. Entonces $NAME
no está configurado para nada.
$ cat >foo <<EOF
NAME=Steve
echo Hello ${NAME}
EOF
$
$ cat foo
Hello
$
Al introducir un \
carácter, la variable no se evalúa en el momento de la creación del archivo.
$ cat >foo <<EOF
NAME=Steve
echo Hello \${NAME}
EOF
$
$ cat foo
Hello Steve
$