Попытка получить этот сниппет правильно. Я хочу попытаться подключить SFTP
3 раза до того, как сломать и выйти из оболочки. Улов в том, что есть heredoc, и sftp
не берет heredoc в качестве входа, когда соединение выполнено успешно; оболочка становится интерактивной, чего я не хочу.Как разместить heredoc в конце попытки соединения Bash sftp?
count=0; until sftp -o StrictHostKeyChecking=no -i $key $server ; do ((count++)); [[ $count -eq 3 ]] && echo $count && break && exit 64; done; <<END
get docs/*
quit
END
heredoc - это еще один способ отправки ввода в stdin, но его нужно отправить в то, что прослушивается. Вы не отправляете его на 'sftp'. Попробуйте использовать опцию '-b' для' sftp'. – miken32
BTW, я бы предложил использовать 'lftp' (который, да, поддерживает протокол sftp), а не инструмент' sftp'; даже не нужен heredoc, и есть встроенная поддержка зеркалирования каталогов и c. –
Кроме того, у вас есть некоторые синтаксические ошибки bash; см. http://shellcheck.net/. –