#!/bin/sh
flag="False"
ssh -n $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"
Flag ist gleich „false“, bevor eine Verbindung zum Remote-Standort hergestellt wird. Ich möchte lediglich den Wert von Flag innerhalb des SSH-Blocks ändern, nachdem ich eine Operation am Remote-Standort ausgeführt habe, und den Wert von Flag an meine lokale Variable Flag zurückgeben. –
Antwort1
Ich nehme an, Sie wollen etwas in der Art von
#!/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
)
Dies würde das als zitiertes Here-Dokument angegebene Skript auf dem Remote-Host ausführen und seine Ausgabe würde der lokalen Variable zugewiesen flag
. So wie ich es hier geschrieben habe, gehe ich davon aus, dass das some operations
Bitnichtkeine Ausgabe erzeugen, sondern dass die einzige vom Remote-Skript erzeugte Ausgabe von einem der beiden bedingten echo
Befehle stammt.
Ihrer flag
Variablen wird, abhängig vom Ergebnis von , die Zeichenfolge true
oder zugewiesen .false
some_condition
Wenn Sie den Wert im Remote-Skript verwenden müssen $flag
, müssen Sie ein nicht in Anführungszeichen gesetztes Here-Dokument verwenden. Sie müssen dann darauf achten, dass Sie alle Shell-Erweiterungen, die remote ausgeführt werden sollen, ordnungsgemäß maskieren (indem Sie diese $
als maskieren \$
).