while read -r d; do
[[ -d $d ]] || {
echo "$d is not a directory, skipping it" >&2
continue
}
d=${d%%+(/)}
info_ "Processing <<$d>>"
{ ssh ${remoteHost} "mkdir -p '$d'" && echo 'mkdir OK' >&2; } || echo 'mkdir FAIL' >&2
rsync -a${flBeVerbose:+v} "${d}/" "${remoteHost}:${d}"
done < <(cat "$confDirList" | sed -r -e '/^\s*(#.*)?$/d' -e 's%\s*(#.*)$%%')
Есть вот такой цикл. В confDirList - путь до файлика с каталогами для синхронизации через перевод строки, либо "-", если нужно читать с STDIN. Целиком код этого скриптика здесь: https://pastebin.com/HbhWLWad
Внимание, вопрос: (какого) почему такое может быть, что если делать ssh в цикле, то цикл выполнится только один раз (и будет напечатано: «mkdir OK»), а если не делать ssh - то всё ОК, выполнится по количеству каталогов в confDirList'е. Каким образом использование ssh может привести к генерации признака EOF при чтении из потока в цикле while??