#!/bin/sh
flag="False"
ssh -n $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"
flag равен false перед подключением к удаленному расположению. Я просто хочу изменить значение flag внутри блока ssh после выполнения некоторой операции в удаленном расположении и вернуть значение flag в мою локальную переменную flag. –
решение1
Я предполагаю, что вы хотите сделать что-то в духе
#!/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
)
Это выполнит скрипт, заданный как цитируемый here-document на удаленном хосте, и его вывод будет назначен локальной переменной flag
. В том виде, в котором я это написал, я предполагаю, что бит some operations
делаетнетне производит никаких выходных данных, а вместо этого единственный выходной сигнал, создаваемый удаленным скриптом, поступает от одной из двух условных echo
команд.
Вашей flag
переменной будет присвоена строка true
или false
в зависимости от результата some_condition
.
Если вам нужно использовать значение $flag
внутри удаленного скрипта, вам придется использовать некавычный here-document. Затем следует позаботиться о том, чтобы правильно экранировать любые расширения оболочки, которые вы хотите, чтобы выполнялись удаленно (экранируя их $
как \$
).