Я автоматизирую ftp-сессию, но хочу взять stdout и передать ее в файл. Я пришел с 3-мя вариантами:Где я могу подключиться к файлу при использовании встроенного << EOF ... EOF?
Вариант 1
ftp -i ftpServer >stdoutFile <<EOF
cd somewhere
get something
EOF
Вариант 2
ftp -i ftpServer <<EOF >stdoutFile
cd somewhere
get something
EOF
Вариант 3
ftp -i ftpServer <<EOF
cd somewhere
get something
EOF > stdoutFile
Кажется, я получаю синтаксические ошибки со всеми из них, и никто из них, похоже, не работает.
Мне кажется, что я как-то доработал это раньше, но я не могу вспомнить, как это сделать.
Редактировать
Ошибки синтаксиса все еще присутствуют. Похоже, если я использую этот метод с документом под названием EOF, я не могу использовать этот делитель где-нибудь еще в скрипте - странно.
Точная ошибка, которая возникает, на самом деле является сбой при следующем завершении if-statement. Например:
if [ condition ]
then
ftp -i ftpServer >stdoutFile <<EOF
cd somewhere
get something
EOF
fi
if [ something else ]
then
somethingWithaHereDoc <<EOF
foo
bar
EOF
fi
я Syntax error near unexpected token 'fi'
указывающий на линию последних фи.
Соединение FTP теперь висит. Я использую файл ~/.bashrc, и он работает в другой консоли, но не в скрипте. У меня случайно был именованный канал в каталоге, в результате чего ftp-сессия зависала. Все разрешено сейчас. благодаря!
Причина, по которой я делаю это, заключается в том, что я хочу загрузить определенный файл с ftp-сервера. Я перечисляю содержимое каталогов, выходя из сеанса ftp и обрабатывая его в bash, а затем запускаю другой ftp-сеанс, чтобы получить файл, который я выбрал.
Варианты 1 и 2 должны оба работают. –
Пожалуйста, покажите синтаксические ошибки, которые вы получаете, и контекст. Вариант 3, конечно, не удастся, но первые два должны быть в порядке. – cdarke
Ваши первые и все приведенные выше варианты верны, но ваш 'EOF' должен быть единственной вещью в строке: никаких ведущих вкладок или пробелов, никаких отстающих барахлов. Проблема, которую вы видите, это bash, которая не распознает терминатор. – gilez