Я пытаюсь подключиться к нескольким хостам в цикле и запустить несколько команд / сценариев через ssh, и сохранить результаты в локальной переменной.Я использую здесь документ, но меня немного смущает вопрос о том, должен ли он быть заключен в кавычки или нет, поскольку я использую смесь локальных и удаленно объявленных переменных.Какой будет правильный синтаксис для этого?Что мне нужно экранировать?
for host in $HOSTS; do
RESULT+=$(ssh -T $host <<EOF
H=`dirname $HOME`
M=`mount | grep $H | grep nfs`
[[ "$M" ]] && MYFILE=$WD/file1 || MYFILE=$WD/file2
cd $WD && monit.sh $MYFILE
EOF
)
done
$ RESULT и $ WD - локальные переменные, а остальные - удаленные.Результатом вышеописанного является то, что локальные переменные имеют ожидаемые значения, в то время как все удаленно объявленные переменные пусты ($ H, $ M, $ MYFILE ..). Если я заключаю EOF в одинарные кавычки, результат как-то меняется на противоположный: $ WDпусто, в то время как $ H и $ M получают правильные значения ($ MYFILE также, но без части $ WD)
Большое спасибо