variável local não está acessível dentro do bloco ssh

variável local não está acessível dentro do bloco ssh
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

flag é igual a false antes de conectar ao local remoto. Eu só quero alterar o valor do flag dentro do bloco ssh depois de fazer alguma operação no local remoto e retornar o valor do flag para minha variável local flag. –

Responder1

Presumo que você esteja querendo fazer algo nos moldes de

#!/bin/sh

flag=$(
    ssh -T "$user@$host" <<'END_SCRIPT'
        # some operations on
        # the remote host goes here

        # later...

        if some_condition; then
            echo true
        else
            echo false
        fi
END_SCRIPT
)

Isso executaria o script fornecido como documento citado aqui no host remoto e sua saída seria atribuída à variável local flag. Do jeito que escrevi aqui, presumo que a some operationsparte simnãoproduza qualquer saída e, em vez disso, a única saída produzida pelo script remoto venha de qualquer um dos dois echocomandos condicionais.

Sua flagvariável receberia a string trueou falsedependendo do resultado de some_condition.

Se você precisar usar o valor $flagdentro do script remoto, você terá que usar um documento aqui sem aspas. Deve-se então tomar cuidado para escapar adequadamente de quaisquer expansões de shell que você gostaria que acontecessem remotamente (escapando delas $como \$).

informação relacionada