Estou ssh-in para uma máquina remota (ubuntu) e tentando executar um pequeno script lá. O script se parece com isso:
myfunction()
{
input=$1
count=$2
ssh ubuntu@ip <<EOF
if [ $input = "comment" ];then
TotalCount=$count
echo "TotalCount is $TotalCount"
else
echo "do something"
fi
EOF
}
myfunction comment 2
Ele SSH no servidor, mas imprime vazio
Saída: TotalCount é
Eu tentei escapar da variável (TotalCount=\$count) já que isso está sendo executado no host remoto. Mas não funcionou
Solução
Tente isso em vez disso:
Observe que adicionei uma barra invertida
\$TotalCount
para impedir que ela fosse expandida localmente.Explicação
Você deseja escapar da
TotalCount
variável, porque essa variável está sendo definida remotamente. Se$TotalCount
for avaliado localmente, ele (provavelmente) avaliará a string vazia, o que explica por que você não estava vendo nenhuma saída. Acount
variável, por outro lado, está sendo definida localmente, então você não quer escapar dela.