la variable local no es accesible dentro del bloque ssh

la variable local no es accesible dentro del bloque ssh
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

flag es igual a false antes de conectarme a la ubicación remota. Solo quiero cambiar el valor de flag dentro del bloque ssh después de realizar alguna operación en una ubicación remota y devolver el valor de flag a mi variable local flag. –

Respuesta1

Supongo que quieres hacer algo parecido a

#!/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
)

Esto ejecutaría el script proporcionado como documento aquí citado en el host remoto y su salida se asignaría a la variable local flag. Por la forma en que lo he escrito aquí, supongo que el some operationsbit nonoproducir cualquier resultado y, en cambio, que el único resultado producido por el script remoto provenga de cualquiera de los dos echocomandos condicionales.

A su flagvariable se le asignará la cadena trueo falsedependiendo del resultado de some_condition.

Si necesita utilizar el valor $flagdentro del script remoto, deberá utilizar un documento aquí sin comillas. Luego se debe tener cuidado de escapar adecuadamente de cualquier expansión de shell que desee que ocurra de forma remota (escapando de $estas como \$).

información relacionada